c# - 我可以在 WPF 中捕获对可观察结构成员的更新吗?

标签 c# wpf binding observable

我有一个在 COM 库中定义的结构。 在我的 ViewModel 中,我创建了一个可观察的实例,并希望将结构的每个成员绑定(bind)到 View 中的不同控件。 ConfigStaticDataDetails 变量通过 COM 中的委托(delegate)进行更新。

有没有办法捕获结构成员的更新,以便我的 View 反射(reflect)更新?

部分结构:

public struct ConfigStaticData
{
    public string Callsign;
}

我的:变量:

private ConfigStaticData _ConfigStaticDataDetails;
public ConfigStaticData ConfigStaticDataDetails
{
    get
    {
        return _ConfigStaticDataDetails;
    }
    set
    {
        _ConfigStaticDataDetails = value;
        OnPropertyChanged("ConfigStaticDataDetails");
    }
}

在 XAML 中:

<TextBox Name="ConfigStaticDataCallsignLabelTxt"
         Margin="0,2,0,2"
         Width="230"
         Style="{DynamicResource EditableTextBox}"
         Text="{Binding Source=ConfigStaticDataDetails, Path=Callsign}" />

我尝试了不同的方法,但这是我当前的代码(不起作用)。

最佳答案

我认为你应该用你自己的类替换那个结构,只使用结构来实现可移植性。结构应该是不可变的;因此,很少有任何有趣的观察。由于值语义,每个观察者可能会看到不同的值(或者可能是装箱的对象)。结构和事件不能很好地混合......

关于c# - 我可以在 WPF 中捕获对可观察结构成员的更新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6168085/

相关文章:

WPF - 使动画的执行以绑定(bind)数据项的属性为条件

c# - Windows 10 高 DPI 屏幕上的 WPF 应用程序模糊

silverlight - 使用转义字符串格式进行绑定(bind)会破坏 VS IDE 和智能感知

wpf - 如何从另一个窗口的主窗口级别访问命令?

c# - BindingList 投影包装器

c# - 如何在 C# 中使用 IDictionary 和 mysql 创建关联数组?

c# - EF Core - 自引用实体

c# - 无法在运行时找到静态资源,即使设计师可以看到它

c# - EF : The instance of entity type X cannot be tracked because another instance of this type with the same key is already being tracked

c# - 如何从mysql表中删除单个值