我能否在WPF中捕获可观察结构的成员更新?

5

我有一个在COM库中定义的结构体。在我的ViewModel中,我创建了一个可观察的实例,并希望将结构体的每个成员绑定到视图中的不同控件。

ConfigStaticDataDetails变量通过COM中的委托进行更新。

是否有一种方法可以捕获对结构体成员的更新,以便我的视图反映更新?

结构体的一部分:

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}" />

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

您不能绑定到字段,并且您指定的源被解释为字符串。您可能想看一下这篇文章 - H.B.
3个回答

3

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


“elrarwly” 应该是什么意思? - Davy8

0
谢谢您的输入。
我认为我的解决方案将是重新设计COM接口,并使用实现INotifyPropertyChanged接口的类而不是结构体。这似乎按预期工作。

0

我认为你应该编写一些绑定转换器的代码来方便通知。为了使其更具可移植性,你可以将“通知”逻辑封装在与你的结构相关的扩展方法中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接