Mal*_*ker 2 .net c# silverlight
我有一个TreeView项和一个相应的TreeViewModel.我想在TreeViewModel上支持一个属性,该属性可以跟踪TreeView中当前选定的项目.
这是我的代码:
<UserControl.DataContext>
<vm:TreeMenuViewModel />
</UserControl.DataContext>
<UserControl.Resources>
<common:HierarchicalDataTemplate x:Key="MenuItemsTemplate"
ItemsSource="{Binding ChildItems}">
<TextBlock Text="{Binding MenuOption}"/>
</common:HierarchicalDataTemplate>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<toolkit:DockPanel>
<sdk:TreeView
Name="treeView1"
VerticalAlignment="Stretch"
toolkit:DockPanel.Dock="Left"
Background="Transparent"
ItemsSource="{Binding ChildItems}"
ItemTemplate="{StaticResource MenuItemsTemplate}"
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedItemChanged">
<ei:ChangePropertyAction
TargetObject="{Binding}"
PropertyName="SelectedItemId"
Value="{Binding MenuOptionId}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</sdk:TreeView>
</toolkit:DockPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
TreeView正确绑定和显示数据.触发器也在工作并且定位正确的属性 - 当我在TreeViewModel中的SelectedItemId属性中断时,属性被命中,但提供的值始终为0.我如何提供所选项的值?
只需删除整个触发器并添加:
ItemsSource="{Binding ChildItems}"
SelectedItem="{Binding SelectedChild}"
Run Code Online (Sandbox Code Playgroud)
然后您的ViewModel需要SelectedChild属性.您的VM可以对该属性的setter的更改做出反应.
如果您想要双向绑定,请将其设为NotifyChange属性.
我想你想要id:SelectedChild.Id或类似的东西.
| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |