我有一个自定义文本框,我计划将其包含在另一个用户控件中,但是在为其设置绑定时,它根本没有绑定。
为了清楚起见,我简化了代码。
我的自定义文本框:
<UserControl DataContext="{Binding RelativeSource={RelativeSource Self}}">
<TextBox Text="{Binding Text, UpdateSourceTrigger=PropertyChanged}" />
</UserControl>
partial class CustomTextBox : UserControl
{
public string Text
{
get { return (string)GetValue(TextProperty); }
set
{
SetValue(TextProperty, value);
}
}
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
"Text",
typeof(string),
typeof(CustomTextBox),
new PropertyMetadata(String.Empty));
}
此绑定按预期工作。当CustomTextBox在另一个用户控件或窗口中使用时,我可以按预期访问该属性。
以下代码块描述了使用的 UserControlCustomTextBox以及具有我想要绑定到的属性的相应 ViewModel Text。
<UserControl>
<UserControl.DataContext>
<vm:MyViewModel />
</UserControl.DataContext>
<local:CustomTextBox Text="{Binding FooBar, UpdateSourceTrigger=PropertyChanged}" />
</UserControl>
public class MyViewModel : INotifyPropertyChanged
{
private string _fooBar;
public string FooBar
{
get { return _fooBar = (_fooBar ?? ""); }
set
{
_fooBar = value; OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
当我想将Text属性绑定到另一个 UserControl 中的 ViewModel 时,我的问题就发生了,它只是不起作用。在本例中,我尝试将Text属性绑定到类FooBar上的属性MyViewModel,但是对Text属性的更改不会反映在FooBar属性上,反之亦然。但是,当我将鼠标悬停在 XAML 视图中的绑定上时,它会显示属性的类型,因此我并没有完全看出这里出了什么问题。
我最好的猜测是它与访问同一属性的两个绑定有关。
天涯尽头无女友
相关分类