3

私は、開発標準 (依存関係の挿入と明示的なインターフェイスへのオブジェクトの開発) を遵守しようとしながら、WPF の利点を示すために、職場の部門のために WPF デモを作成しています。

今、ちょっとした壁にぶち当たりました。MVVM デザイン パターンを使用してビューを実装しており、ビュー モデル (VM) のプロパティが更新されるたびに TextBlocks Text プロパティを更新する必要があります。このために、VM プロパティを Dependency Property として定義し、View の TextBlocks Text プロパティをそれにバインドします。

これで、MV プロパティがインターフェイス上にあり、(開発基準に従って) 明示的に定義されます。ビューから、ビューの TextBlock の Text プロパティを Dependency Properties プロパティ (静的部分ではない) にバインドしますが、依存関係プロパティの値が変更されたときにビューが更新されません (明示的なインターフェイスにバインドする方法を知っているので、これ私が見る限り問題ではありません)。

どんな助けでも本当に感謝します。明示的インターフェイスで依存関係プロパティを使用できますか? この状況で私に何ができるかについて何かアイデアをお持ちでない場合はどうすればよいですか?

お読みいただきありがとうございます。返信をお待ちしております。

アダム

4

2 に答える 2

6

あなたの質問を正しく理解したかどうかは完全にはわかりませんが、単にINotifyPropertyChangedViewModel で使用してみませんか?

例えば:

interface MyInterface : INotifyPropertyChanged
{
    string Text { get; set; }
}

class MyViewModel : MyInterface
{
    private string text;
    public string Text 
    {
        get { return text; }
        set 
        { 
            if (text != value)
            {
               text = value;
               // TODO: Raise the NotifyPropertyChanged event here
            }
        }
    }
}

Textこれにより、プロパティに簡単にバインドできるはずです

于 2008-12-24T23:36:53.780 に答える
1

質問はやや混乱していますが、私はそれを突き刺します。依存関係プロパティのいくつかのバリエーションを試しましたが、次のインターフェイスでは機能しませんでした。

interface IViewModel
{
    string Text { get; set; }
}

次の構文を使用して、実装クラスにプロパティを登録しました (それぞれ別のテストで)。

public static readonly DependencyProperty TextProperty = 
    DependencyProperty.Register("Text", 
        typeof(string), typeof(IViewModel));

次に、インターフェイスを明示的または暗黙的に実装しようとしましたが、役に立ちませんでした。うまくいった唯一の組み合わせは、私が使用したときです。

public static readonly DependencyProperty TextProperty = 
    DependencyProperty.Register("Text", 
        typeof(string), typeof(ImplementingClass));

問題が発生し、他の WPF サンプルを探している場合は、チェックアウトすることをお勧めします。

幸運を。

于 2008-12-25T06:29:04.307 に答える