10

コントロールがあり、そのコントロール内にデータ テンプレートを持つリソースがあります。

  <DataTemplate DataType="{x:Type local:FlowModel}">
    <Image Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type vm:MainViewModel}}, Path=MainViewModel.ImagePath}"/>
  </DataTemplate>

 xmlns:vm="clr-namespace:CortexMonitoringTool.ViewModel"

ViewModel フォルダーに vm を設定しました。mvvm を実装しています。バインディングを機能させることができず、その理由がわかりません。

私のMainViewModelクラスで私のプロパティ「ImagePath」を実際に見ることができる場合、私の相対バインディングが正しいかどうか教えてもらえますか?

public String ImagePath
    {
        get
        {
            return _imagePath;
        }
        set
        {
            if (_imagePath == value)
            {
                return;
            }
            _imagePath = value;
            RaisePropertyChanged("ImagePath");
        }
    }

ありがとうございました。

4

2 に答える 2

14

こんにちは、私はそれを機能させることができました。

  <DataTemplate DataType="{x:Type local:FlowModel}">
    <Image Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.ImagePath}"/>
  </DataTemplate>

AncestorType を「Window」に変更しました。これはすべて MainViewModel にバインドされ、「DataContext」を使用しました。私のプロパティを見ることができるように私のパスで。

これが他の誰かに役立つことを願っています!!

于 2012-05-30T10:40:36.307 に答える
5

ビュー モデルはビジュアル ツリーの一部ではありません。そのため、祖先の検索タイプはそこで機能しません。そして、データコンテキストを持つルートの親が見つかった場合は、そのプロパティを使用して like とバインドできます。

<Image Source={...... Path=DataContext.MyProperty}"/>
于 2012-05-30T11:36:53.037 に答える