我正在尝试制作一个TreeView
使用ItemTemplate
, 并且还绑定到具有IsSelected
属性的视图模型。
我不确定为什么这不起作用,所以如果问题看起来含糊不清,我深表歉意。
我也将代码简化为我认为的问题,因为我的应用程序有更多XAML
,所以我希望我所包含的内容就足够了。
以下是我定义我的 DataTemplate 的方式:
<DataTemplate x:Key="ElementDataTemplate">
<Label Content="{Binding Path=DisplayText}"></Label>
</DataTemplate>
这是我如何使用它:
<TreeView ItemsSource="{Binding Elements}"
ItemTemplate="{DynamicResource ElementDataTemplate}">
<TreeView.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="IsSelected"
Value="{Binding Path=IsSelected, Mode=TwoWay}" />
</Style>
</TreeView.Resources>
</TreeView>
我的 ViewModel 具有 DisplayText 和 IsSelected 属性。
我知道我已正确绑定到 ViewModel,因为我看到的项目数量与我的数据上下文的 Elements 属性中的项目数量相同,并且我的 Label 的 Coutent 已正确设置为 DisplayText——我已经通过断点验证了这一点当我运行应用程序时,getter 和可视化。
但是,IsSelected
ViewModel 上的属性 getter 永远不会被调用(永远不会遇到断点),所以很明显我在 IsSelected 属性的绑定上搞砸了一些东西。
我应该指出,当我运行应用程序时,我可以用鼠标选择项目,它们直观地反映了选择,因此 TreeView 项目本身被选中,它只是没有绑定到 ViewModel 的 IsSelected 属性。任何帮助将非常感激!