Wpf 在Treeview项目中使用文本块时,内容绑定不适用于文本块
我有一个树状视图,我正在树状视图项中使用文本块。当我为树状视图项使用“数据上下文”时,我无法为文本块绑定文本。有人能帮我解决这个问题吗Wpf 在Treeview项目中使用文本块时,内容绑定不适用于文本块,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我有一个树状视图,我正在树状视图项中使用文本块。当我为树状视图项使用“数据上下文”时,我无法为文本块绑定文本。有人能帮我解决这个问题吗 here is my xaml code.. <TreeViewItem ItemsSource="{Binding}" DataContext="{Binding XYZ}"> <TreeViewItem.Header> <StackPanel> <Image
here is my xaml code..
<TreeViewItem ItemsSource="{Binding}" DataContext="{Binding XYZ}">
<TreeViewItem.Header>
<StackPanel>
<Image Source="abc.png" />
<TextBlock Text="{Binding BindContent}"></TextBlock>
</StackPanel>
</TreeViewItem.Header>
</TreeViewItem>
in My View Model, I am using
private string _content;
public string BindContent
{
get{ return _content;}
set{_content= value;}
}
In my constructor I am setting value for Content...
这是我的xaml代码。。
在我的视图模型中,我使用
私有字符串\u内容;
公共字符串绑定内容
{
获取{return\u content;}
设置{u content=value;}
}
在我的构造函数中,我正在为内容设置值。。。
当我使用静态内容(或不使用静态内容)时,它工作正常
Treeview项的数据上下文。但出于其他一些原因,我需要使用数据上下文。
当我为树状视图项使用数据上下文时,如何为文本块绑定内容
提前感谢。我认为问题可能是您没有实现INotifyPropertyChanged或者没有引发notify属性更改事件。默认情况下,文本为空,然后在
ViewModel
的构造函数中设置它,但如果它不是INotifyPropertyChanged
,则不会通知视图
希望这能帮助你解决问题…你可以做两件事
确保viewmodel按照Raul Otario的建议实现了INotifyPropertyChanged,并在属性更改时引发事件
其次,您可以在绑定中使用相对源,例如,如果您的xaml位于UserControl else窗口中,则使用UserControl
<TextBlock Text="{Binding Path=DataContext.BindContent,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}}}"/>
希望它能帮助…查看VS输出窗口。您将发现指向确切问题的精确绑定错误。另外,使用ItemsSource for TreeViewItem的原因是什么?您应该为TreeView设置它,它是
XYZ
?您的属性BindContent
是否属于XYZ类型?@HighCore:感谢您的建议,我们将对此进行调查…@Lonli Lokli-感谢您的回复,我正在使用项目源作为树状视图项目,因为我在树状视图中有两个树状视图项目。对于第一个项目,我绑定“XYZ”属性,对于另一个Treeview项目,我绑定其他一些属性。。因此,我对每个树视图项使用项源,而不是对树视图使用项源。。