我有一个自定义文本框,我计划将其包含在另一个用户控件中,但是在为其设置绑定时,它根本没有绑定。为了清楚起见,我简化了代码。我的自定义文本框:<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 视图中的绑定上时,它会显示属性的类型,因此我并没有完全看出这里出了什么问题。我最好的猜测是它与访问同一属性的两个绑定有关。
1 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
修改 DP 注册以包含FrameworkPropertyMetadataOptions.BindsTwoWayByDefault选项
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
"Text",
typeof(string),
typeof(CustomTextBox),
new FrameworkPropertyMetadata(String.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
- 1 回答
- 0 关注
- 103 浏览
添加回答
举报
0/150
提交
取消