WPF:没有INotifyPropertyChangedUserControl的更新依赖项属性

问题描述

| 场景:UserControl具有一个只读的TextBox和一个Button。每当按下按钮时,都会修改和更新TextBox.Text。 问题:TextControl.Text属性绑定到UserControl.Message依赖项属性,但是从UserControl中修改UserControl.Message时不会更新。但是,在实现INotifyPropertyChanged时,目标会更新。 我实际上不需要在依赖项属性上实现INotifyPropertyChanged吗?我想念什么?请在此处查看演示代码。 谢谢。 消息属性声明
    public static readonly DependencyProperty MessageProperty = 
        DependencyProperty.Register(\"Message\",typeof (string),typeof (TextControl),new FrameworkPropertyMetadata(\"[WPFApp]\" + 
        Environment.NewLine,OnMessageChanged,OnMessageCoerce));

    public string Message
    {
        get { return (string) GetValue(MessageProperty); }
        set { SetValue(MessageProperty,value); }
    }

    private static object OnMessageCoerce(DependencyObject obj,object baseValue)
    {
        return (string) obj.GetValue(MessageProperty) + (string) baseValue;
    }

    private static void OnMessageChanged(DependencyObject d,DependencyPropertyChangedEventArgs e)
    {
         // do i need to do this?
         ((TextControl) d).NotifyPropertyChanged(\"Message\");
    }
UserControl缩写XAML
<UserControl x:Class=\"WPFApp.TextControl\"
         xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"
         xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"
         xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" 
         xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" 
         mc:Ignorable=\"d\" d:DesignHeight=\"64\" d:DesignWidth=\"355\"
         DataContext=\"{Binding RelativeSource={RelativeSource Self}}\">
<Grid>
    <TextBox Text=\"{Binding Message,Mode=OneWay}\" ... />
    <Button ... />
</Grid>
</UserControl>
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)