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

通知を容易にするために、バインディングコンバーターでコードを作成する必要があると思います。移植性を高めるために、構造体に関連する拡張メソッドで「通知」ロジックをラップすることができます

于 2011-05-29T14:01:35.027 に答える
0

ご意見ありがとうございます。私の解決策は、COM インターフェイスを再設計し、構造体の代わりに INotifyPropertyChanged インターフェイスを実装するクラスを使用することだと思います。これは期待どおりに動作するようです。

于 2011-05-31T11:53:41.260 に答える