基于storabiligty的原因我在XAML图中有以下对象:
WorkArea,workSheets是ItemsControl实例。
开始:我没有在这里使用标准元素的原因是我将加载/保存 - 它们代表商业竞争(实际上是交易应用程序的工作区域),我希望那些具有as尽可能少的“剩余”元素。我特别不希望被绑定到来自第三方的用户级控件并定期更改dll名称(在升级期间 - 主要版本在那里进行编码)并且我不确定我根本不会替换它们,所以我宁愿选择我自己的“苗条”物品。
WorkArea对应一个窗口(实际上有一个WorkAreaWindow将WorkArea作为ContentItem。
WorkSheets应该像TabControl一样工作 - 你可以在它们之间切换。
我该怎么做? ;)
我得到的印象是,通过模板机制,我可以将WorkSheets“visuall wrap”作为TabControl中的页面,但我几乎完全迷失了方法。任何人都可以启发我吗?
这是我有多远:
我的层次结构是WorkArea - >工作表 - >工作项(多个)
WorkArea应显示为TabControl,每个WorkSheet有一个选项卡。
WORKAREA:
<local:WorkArea x:Name="WorkArea">
<local:WorkArea.Template>
<ControlTemplate>
<TabControl>
<ItemsPresenter />
</TabControl>
</ControlTemplate>
</local:WorkArea.Template>
<local:WorkArea.ItemTemplate>
<DataTemplate>
<TabItem Header="{Binding Path=Title}">
<ContentPresenter />
</TabItem>
</DataTemplate>
</local:WorkArea.ItemTemplate>
<local:WorkSheet Title="Markets">
<local:WorkTile local:WorkSheet.Row="2" local:WorkSheet.Column="3">
test-11
我现在看到的是TabControl,有一个Tab。没有文字,一个标签中的所有内容。有人知道如何进一步分裂吗?
答案 0 :(得分:3)
您应该仔细阅读Josh Smith对MVVM here的介绍,并查看演示应用程序源代码。演示应用程序几乎就是您要求的。它使用数据模板,可观察集合绑定和tabcontrol / tabitem基于“联系人”数据的自定义类动态生成选项卡式界面。一些MVVM和命令可能不是你的东西,但是一部分代码可以满足您的需求。 XAML完全没有代码。您只需将窗口的数据上下文设置为工作区类实例,该实例将具有可观察的工作表集合,而工作表又具有可观察的workItem集合,项目/数据模板将执行所有操作。