我有一个这样设置的DockPanel
<Window ... > <DockPanel x:Name="myDock" DataContext="{Binding HonapokList}" >
在Dockpanel里面有一个TextBox,像这样
<TextBox x:Name="tbCount" Text="{Binding Path=Count,Mode=OneWay}" /> </DockPanel> </Window>
这是我如何设置HonapokList,所以它基本上是一个List String>
public List<String> HonapokList; public MainWindow() { InitializeComponent(); HonapokList = new List<string>(); Honapok.ItemsSource = HonapokList; HonapokList.Add("January"); HonapokList.Add("February"); HonapokList.Add("March"); }
我想我的文本框显示在HonapokList(在这个例子中是3)的元素数量,但是没有任何内容。 这是为什么?
Window
没有一个默认的DataContext
,但是看起来你假设它被设置为它自己。 您可以将其设置为在构造函数中执行:
DataContext = this;
或者在XAML中:
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}">
您也需要将HonapokList
更改为属性,而不是像现在这样的字段,以便与之绑定。
首先你可以绑定Properties
而不是fields
。 所以,让HonapokList
属性 –
public List<String> HonapokList { get; }
其次,改变你的xaml使用RelativeSource
在你的Window
类中查找属性 –
<DockPanel x:Name="myDock"> <TextBox x:Name="tbCount" Text="{Binding Path=HonapokList.Count, Mode=OneWay, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/> </DockPanel>
要么
在你的窗口上设置DataContext
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}">
然后你可以这样做 –
<TextBox x:Name="tbCount" Text="{Binding Path=HonapokList.Count, Mode=OneWay}"/>