我想将文本框绑定到代码隐藏文件中定义的窗口属性。
使用“FindAncestor”设置RelativeSource以查找窗口时,在引用窗口时绑定成功。
为什么它的名称不能引用窗口,就像我可以绑定窗口的“Title”属性一样?
XAML:
<Window x:Class="WpfApplication123.MainWindow"
x:Name="MyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF Binding Example" Height="180" Width="237">
<Grid>
<TextBox Height="23" HorizontalAlignment="Left" Margin="24,24,0,0" Name="textBox1" VerticalAlignment="Top" Width="136"
Text="{Binding ElementName=MyWindow, Path=Title}"/>
<TextBox Height="23" HorizontalAlignment="Left" Margin="24,53,0,0" Name="textBox2" VerticalAlignment="Top" Width="136"
Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=XYZ}"/>
<TextBox Height="23" HorizontalAlignment="Left" Margin="24,82,0,0" Name="textBox3" VerticalAlignment="Top" Width="136"
Text="{Binding ElementName=MyWindow, Path=XYZ}" />
</Grid>
</Window>
代码背后:
namespace WpfApplication123
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
XYZ = "XYZ!";
}
public string XYZ { get; set; }
}
}
答案 0 :(得分:1)
我从未使用过普通属性,但我的猜测是你需要实现INotifyPropertyChanged接口,并在XYZ的setter中引发属性更改事件。 更好的方法是直接使用依赖属性。
只需将XYZ设为依赖属性即可。
答案 1 :(得分:1)
你可以设置this.DataContext = this然后绑定到path。
你需要
XYZ = "XYZ";
初始化文本框时XYZ为空