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

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

4

3 回答 3

3

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

于 2011-05-29T14:20:51.443 回答
0

我认为您可能应该在 Binding Converter 中编写一些代码以方便通知。为了使其更便携,您可以将“通知”逻辑包装在与您的结构相关的扩展方法中

于 2011-05-29T14:01:35.027 回答
0

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

于 2011-05-31T11:53:41.260 回答