为了账号安全,请及时绑定邮箱和手机立即绑定

绑定到 UserControl 的属性不起作用

绑定到 UserControl 的属性不起作用

C#
POPMUISE 2023-09-16 16:14:50
我有一个自定义文本框,我计划将其包含在另一个用户控件中,但是在为其设置绑定时,它根本没有绑定。为了清楚起见,我简化了代码。我的自定义文本框:<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));



查看完整回答
反对 回复 2023-09-16
  • 1 回答
  • 0 关注
  • 43 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信