当我的ListView中的选择更改时,如何更改TextBlock的文本?
我不想这样做手动...
ListView的所有项目是LogEntry的(类)...我可以在TextBlock的文本属性中使用绑定来获取所选项目的特定属性?TextBlock TextView中的文本绑定项
回答
是的,其实有多种解决方案,我给你最“WPF”之类的答案,但海事组织还最不灵活。
首先,你需要设置IsSynchronizedWithCurrentItem="True"
property
现在,如果你选择一个项目,绑定CollectionView将设置项为CURRENTITEM。
现在您的文本框/块可以通过使用'/'的特殊绑定语法绑定到此特定项目。 例如:
<TextBlock Text="{Binding LogEntries/}"/>
当然,你可以通过藏汉结合
<TextBlock Text="{Binding LogEntries/WarningMessage}"/>
希望帮助摆脱当前项目的特定属性。
假设你有一个这样的列表视图:
<ListView ItemSource="{Binding LogEntries}" Name="logs" IsSynchronizedWithCurrentItem="True">
</ListView>
<ContentControl Content="{Binding ElementName=logs, Path=SelectedItem}" ContentTemplate="{StaticResource logTemplate}"/>
现在,您需要提供的资源与logtemplate在需要定义。
<UserControl.Resources>
<DataTemplate DataType="{x:Type local:LogEntry}">
<TextBlock Text="{Binding Path=LogText}"/> <-- This is a Property-Binding of your custom class
</DataTemplate>
</UserControl.Resources>
缺少的最后一件事是将命名空间提供给本地类LogEntry。如果你使用一个像Resharper这样的真棒工具,它会为你插入名字空间。否则,这里的样本声明:
<UserControl xmlns:local="clr-namespace:My.App.Namespace.LogEntry;assembly=My.App"
... (rest of namespace declarations)
我不知道ContentControl的功能是什么... – 2012-02-22 09:46:14
对不起,它进一步... – 2012-02-22 09:46:50
是的,ItemsSource是正确的。 我在内部使用ObservableCollection
- 1. 在新窗口中绑定TextBlock文本?
- 2. 将WPF TextBlock绑定到文本文件
- 3. 动态设置TextBlock的文本绑定
- 4. 将文本添加到绑定的TextBlock
- 5. TextBlock:文本和StringFormat的绑定
- 6. 绑定一个TextBlock的文本TabControl的项目在WPF
- 7. 将TextBlock的文本设置为字符串加绑定项目?
- 8. 将TextBlock文本绑定到资源
- 9. 动态文本绑定在WPF TextBlock
- 10. TextBlock绑定
- 11. TextBlock绑定?
- 12. TextBlock/TextBox中的格式化文本 - 带有绑定
- 13. 在ListView中绑定到TextBlock
- 14. 更新TextBlock绑定
- 15. 如何将TextBlock的文本属性绑定到文本框的文本属性
- 16. 在DataGrid中绑定TextBlock文本和组合框SelectionChanged事件
- 17. TextBlock的绑定格式
- 18. 的TextBlock甚至绑定
- 19. WPF属性绑定的TextBlock
- 20. 添加文本TextBlock的Text属性时,它的绑定
- 21. 文本块绑定文本
- 22. 如何绑定DataTemplate中的TextBlock的值?
- 23. TextBlock绑定到文本框的可见性
- 24. Windows Phone 7的 - TextBlock文本绑定到ViewModel不返回anythinig
- 25. 当它是一个简单的字符串绑定TextBlock文本
- 26. 如何获取文本从绑定的TextBlock商店App C#
- 27. WPF绑定:如何将文件路径列表中的名称绑定到ListBox中TextBlock的文本?
- 28. 将文本框的文本属性绑定到TextBlock的附加属性,如Grid.Row
- 29. 在Validation.ErrorTemplate中绑定TextBlock的FontSize
- 30. 将textblock绑定到纯xaml中的当前列表框项目
但是,当ListView的选择发生变化时,TextBox-Text必须更新...所以我需要listView的特定项目,并且为每个TextBox指定LogEntry-Item的特定属性(DependencyProperty) ... – 2012-02-22 10:19:00
别担心,它的确如此。当你将一个集合绑定到一个ItemsControl时,WPF将不会直接绑定它,而是一个CollectionView绑定在控件和你的集合之间。使用IsSynchronizedWithCurrentItem,collectionview将跟踪您选择的项目。绑定到您的集合,使绑定知道CollectionView,因此每个绑定到您的集合的控件也可以访问当前项目。 – dowhilefor 2012-02-22 10:54:19
确定它的工作原理:D谢谢。 – 2012-02-22 12:02:31