我在Treeview项中使用它时,内容绑定不适用于Text块

时间:2012-11-27 16:51:00

标签: wpf xaml mvvm

我有一个树视图,我在树视图Item中使用了一个Text块。我无法绑定文本块的文本当我使用“数据上下文”作为我的Treeview项目时。任何人都可以帮我解决这个问题。

 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...

当我不使用静态内容(或)时,它工作正常 Treeview项的数据上下文。但由于其他一些原因,我需要使用数据上下文。  当我使用Tree Context for Tree view Item ...

时,如何绑定Content for Text块

先谢谢。

2 个答案:

答案 0 :(得分:2)

我认为问题可能是您没有实现INotifyPropertyChanged,或者您没有提出notify属性更改事件。默认情况下,文本为null,然后在ViewModel的构造函数中设置它,但如果它不是INotifyPropertyChanged,则不会通知视图。

希望这可以帮助您解决问题...

答案 1 :(得分:1)

你可以做两件事,

确保您的viewmodel按照Raul Otario的建议实现INotifyPropertyChanged,并在属性更改时引发事件,

其次,你可以在你的绑定中使用相对源代码,如果你的xaml在usercontrol上,则可以使用UserControl其他Window

<TextBlock Text="{Binding Path=DataContext.BindContent, 
                  RelativeSource={RelativeSource FindAncestor, 
                  AncestorType={x:Type UserControl}}}"/>

希望它有所帮助...