我在绑定到新控件的依赖属性时遇到问题。
我决定编写一些测试来检查这个问题。
从 TextBox.Text 绑定到另一个 TextBox.Text
XAML 代码:
<TextBox Name="Test" Text="{Binding ElementName=Test2, Path=Text, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Name="Test2" Grid.Row="2" />
结果很好 - 当我在第一个 TextBox 中写东西时 -> 第二个 TextBox 正在更新(反之亦然)。
我创建了新控件-> 例如具有依赖属性“SuperValue”的“SuperTextBox”。
控制 XAML 代码:
<UserControl x:Class="WpfApplication2.SuperTextBox"
...
Name="Root">
<TextBox Text="{Binding SuperValue, ElementName=Root, UpdateSourceTrigger=PropertyChanged}" />
</UserControl>
后面的代码:
public partial class SuperTextBox : UserControl
{
public SuperTextBox()
{
InitializeComponent();
}
public static readonly DependencyProperty SuperValueProperty = DependencyProperty.Register(
"SuperValue",
typeof(string),
typeof(SuperTextBox),
new FrameworkPropertyMetadata(string.Empty)
);
public string SuperValue
{
get { return (string)GetValue(SuperValueProperty); }
set { SetValue(SuperValueProperty, value); }
}
}
好的,现在测试!
从 TextBox.Text 绑定到 SuperTextBox.SuperValue
<TextBox x:Name="Test1" Text="{Binding ElementName=Test2, Path=SuperValue, UpdateSourceTrigger=PropertyChanged}" />
<local:SuperTextBox x:Name="Test2" Grid.Row="2"/>
测试也正确!当我在 TextBox 中写东西时,SuperTextBox 正在更新。当我在 SuperTextBox 中写作时,TextBox 正在更新。一切正常!
现在有一个问题:
从 SuperTextBox.SuperValue 绑定到 TextBox.Text
<TextBox x:Name="Test1"/>
<local:SuperTextBox x:Name="Test2" SuperValue="{Binding ElementName=Test1, Path=Text, UpdateSourceTrigger=PropertyChanged}" Grid.Row="2"/>
在这种情况下,当我在 SuperTextBox 中写东西时,TextBox 没有更新!
我怎样才能解决这个问题?
PS:问题很长,很抱歉,但我尝试准确描述我的问题。