[英]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.