【发布时间】:2011-04-03 23:23:50
【问题描述】:
我有一个TreeView,其中每个项目都有一个复选框。我希望在TreeView 中选中或取消选中某个项目时更新TextBlock。 TextBlock 的Text 应该绑定到我的DataContext 上的CheckedVersions 属性,这样当我读取CheckedVersions 属性时,它会给我一个字符串,代表TreeView 中的所有选中项。选中的项目应以分号分隔的字符串表示。最好的方法是什么?我有以下 XAML:
<XmlDataProvider Source="XmlData/Versions.xml" XPath="//*[count(*)=0]"
x:Key="versionsXml"
IsInitialLoadEnabled="True" IsAsynchronous="False" />
<HierarchicalDataTemplate x:Key="versionTemplate">
<CheckBox Focusable="False" IsChecked="{Binding Path=IsChecked}"
Content="{Binding Path=Name, Mode=OneTime}"/>
</HierarchicalDataTemplate>
<TreeView x:Name="trv_version"
ItemsSource="{Binding Path=Versions, Mode=OneWay}"
ItemTemplate="{StaticResource versionTemplate}" />
<TextBlock x:Name="txb_version" Text="{Binding Path=CheckedVersions}"
TextWrapping="Wrap" />
我的TreeView 中的每个项目都是我的VersionViewModel 类的一个实例,它实现INotifyPropertyChanged 并在IsChecked 属性更改时通知。似乎我应该能够参与其中,以便当IsChecked 更改TreeView 中的VersionViewModel 实例时,CheckedVersions 会更新。也许如果我在TextBlock 中的Text 绑定上设置UpdateSourceTrigger?不过,我应该将其设置为什么?
【问题讨论】:
标签: c# wpf events data-binding inotifypropertychanged