d19*_*224 0 c# data-binding wpf datacontext
我有一个应用程序,我通过 xaml 中的数据模板分配每个视图数据上下文。
问题是我现在有一个作为单例实现的视图模型,并且需要有两个视图使用它。
有没有一种方法可以在一个数据模板中设置多个视图?
我知道像下面这样的东西是行不通的,我只是用这个作为我的意思的例子:
<DataTemplate DataType="{x:Type viewModel:ThisViewModel}">
<view:ViewOne />
<view:ViewTwo />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
谢谢
我不确定我是否完全理解您的意思,但听起来您需要为您的 DataTemplates 分配一个键
<DataTemplate x:Key="DataTemplate1" DataType="{x:Type viewModel:ThisViewModel}">
<view:ViewOne />
</DataTemplate>
<DataTemplate x:Key="DataTemplate2" DataType="{x:Type viewModel:ThisViewModel}">
<view:ViewTwo />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
然后,在常规 XAML 中,您可以通过键指定每个区域要使用的模板,如下所示:
<ContentControl Content="{Binding MyViewModel}"
ContentTemplate="{DynamicResource DataTemplate1}" />
<ItemsControl ItemsSource="{Binding MyViewModels}"
ItemTemplate="{DynamicResource DataTemplate2}" />
Run Code Online (Sandbox Code Playgroud)
如果我误解了,并且您实际上想要一个包含两个视图的数据模板,那么这没有问题。DataTemplates 可以拥有任意数量的元素,但是它们只能有一个主要子元素,因此请将该元素设置为一个面板,用于告诉 WPF 如何排列两个视图。
<DataTemplate x:Key="DataTemplate1" DataType="{x:Type viewModel:ThisViewModel}">
<StackPanel>
<view:ViewOne />
<view:ViewTwo />
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1235 次 |
| 最近记录: |