簡體   English   中英

一個區域中的多個網格

[英]Multiple grids in one area

我目前正在使用Visual Studios 2010中的C#和XAML創建WPF應用程序。

我有一個主網格。 在該主網格中,我有一個組欄,您可以選擇不同的項目。 根據您選擇的內容,主網格的中間可能會完全不同。 我想知道的是,對中間部分進行編程的最佳方法是什么?

現在,我以一種這樣的方式進行設置:中間的所有內容都使用C#動態編程,而外部的所有內容都使用XAML編程。

在C#中,我編程了:對於每個組欄項目,都有一個網格(它可以顯示不同的內容)。 每個網格都是主網格的子級。 必要時每個網格都是可見的或隱藏的。 這是解決此問題的最佳方法嗎?

最好的示例是在Outlook 2007中,您的組欄位於右側。 當您在組欄上選擇其他項目(郵件,日歷,任務)時,組欄的右側會完全改變。

在WPF中執行此操作的簡單方法是為每個“中間”部分定義DataTemplates。

使用Outlook示例,您可能具有一個MessageCollection類和一個TaskCollection類,其中MessageCollection類存儲消息列表,EventCollection類存儲日歷事件列表,而TaskCollection類存儲任務列表。

在“中間”區域中,您將只具有一個ContentPresenter,其Content將被設置為MessageCollection,EventCollection或TaskCollection。 大概可以通過綁定到視圖模型屬性來完成。

這是它的外觀:

<Window ...>
  <Grid>
    <!-- group bar area -->
    ...

    <!-- "middle" area -->
    <ContentPresenter Grid.Row="1" Grid.Column="1"
                      Content="{Binding SelectedCollection}" />
  </Grid>
</Window>

現在,您為每種集合類型創建一個DataTemplate,例如:

<DataTemplate TargetType="{x:Type my:MessageCollection}">
  <Grid>
    ... put the XAML for displaying mailbox contents here ...
  </Grid>
</DataTemplate>

<DataTemplate TargetType="{x:Type my:EventsCollection}">
  <Grid>
    ... put the XAML for displaying a calendar here ...
  </Grid>
</DataTemplate>

<DataTemplate TargetType="{x:Type my:TasksCollection}">
  <Grid>
    ... put the XAML for displaying a to-do list here ...
  </Grid>
</DataTemplate>

使用此設置,切換內部網格所需要做的就是將視圖模型中的“ SelectedCollection”屬性設置為其他集合類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM