我有一些领域视图模型,即 如何绑在一个视图模型
type ViewModel =
member x.a = [1;2;3]
member x.b = [4;5;6]
member x.c = [7]
,并在WPF应用程序中的一些控件放置一些看法,如:
<Control.Resources>
<DataTemplate x:Key="ItemTempl">
<TextBlock Text="{Binding}" />
</DataTemplate>
<DataTemplate x:Key="SomeTempl">
<ListBox ItemsSource="{Binding}"
ItemTemplate="{StaticResource ItemTempl}" />
</DataTemplate>
</Control.Resources>
<StackPanel>
<TabControl x:Name="ListBoxViewPresenter">
<TabItem Header="vm.a" Content="{Binding vm.a}"
ContentTemplate="{StaticResource SomeTempl}"/>
<TabItem Header="vm.b" Content="{Binding vm.b}"
ContentTemplate="{StaticResource SomeTempl}"/>
<TabItem Header="vm.c" Content="{Binding vm.c}"
ContentTemplate="{StaticResource SomeTempl}"/>
</TabControl>
<ListBox x:Name="ListBoxViewPresenter">
<ListBoxItem Content="{Binding vm.a}"
ContentTemplate="{StaticResource SomeTempl}" />
<ListBoxItem Content="{Binding vm.b}"
ContentTemplate="{StaticResource SomeTempl}" />
<ListBoxItem Content="{Binding vm.c}"
ContentTemplate="{StaticResource SomeTempl}" />
</ListBox>
</StackPanel>
我应该怎么办要实现这样的行为: 当您单击ListBoxViewPresenter中的vm.a/b/c中的某个元素时,必须在相应的TabItem中选择ListBoxViewPresenter中的相同元素。
UPD: 具体来说,我真正的问题,从原点主题改变。
我有ViewModel的字段:onelines,twolines ...和一个名为selected_scheme的字段。 在XAML:
<TreeViewItem Header="{Binding Path=name}" x:Name="ProjectArea">
<TreeViewItem Header="Однониточные планы" Style="{StaticResource MyTreeViewItem}">
<ContentPresenter Content="{Binding onelines}" ContentTemplate="{StaticResource SchemeWrapperTemplate}" />
</TreeViewItem>
<TreeViewItem Header="Двухниточные планы" Style="{StaticResource MyTreeViewItem}">
<ContentPresenter Content="{Binding twolines}" ContentTemplate="{StaticResource SchemeWrapperTemplate}" />
</TreeViewItem>
和数据模板:
<DataTemplate x:Key="SchemeWrapperTemplate">
<ListBox ItemsSource="{Binding schemes}"
ItemTemplate="{StaticResource SchemeTemplate}"
SelectedItem="{Binding selected_scheme}">
<ListBox.Style>
在其他地方的程序:
<Grid Grid.Row="1">
<TextBlock Text="{Binding selected_scheme.path}" />
</Grid>
当你点击一些列表框,如果你再选择的项目不改变点击一个SelectedItems。
我不明白这一点..在 “所选项目” 并没有改变,但为什么会改变?它应该已经等于ListBox的SelectedItem,因为它绑定了它? – franssu
selected_item字段是所有ListBox的字段之一。在我的代码中,您可以看到两个在模板“SchemeWrapperTemplate” - Content =“{Binding onelines}”和Content =“{Binding twolines}”上构建的ListBoxes。当我点击第一个列表框中的某个元素时,selected_item发生了变化,然后我点击第二个列表框中的某个元素,而selected_item也发生了变化,但是当它在第一个列表框中点击已经选择的项目时 - 没有任何变化。它期望但我不想跟踪活动的ListBox。有更容易的方法吗? – psct
一个更简单的方法来做什么?你想要达到什么目的?你只是想在用户点击一个项目时得到通知? – franssu