web-dev-qa-db-ja.com

WPF Databinding:「親」データコンテキストにアクセスする方法

ウィンドウにリスト(以下を参照)が含まれています。ウィンドウのDataContextには、ItemsAllowItemCommandの2つのプロパティがあります。

ウィンドウのHyperlinkに対して解決する必要があるCommandDataContextプロパティのバインディングを取得するにはどうすればよいですか?

<ListView ItemsSource="{Binding Items}">
  <ListView.View>
    <GridView>
      <GridViewColumn Header="Action">
        <GridViewColumn.CellTemplate>
          <DataTemplate>
            <StackPanel>
              <TextBlock>

                <!-- this binding is not working -->
                <Hyperlink Command="{Binding AllowItemCommand}"
                           CommandParameter="{Binding .}">
                    <TextBlock Text="Allow" />
                </Hyperlink>

              </TextBlock>
            </StackPanel>
          </DataTemplate>
        </GridViewColumn.CellTemplate>
      </GridViewColumn>
    </GridView>
  </ListView.View>
</ListView>
193
Jordan

次のようなものを試すことができます:

...Binding="{Binding RelativeSource={RelativeSource FindAncestor, 
AncestorType={x:Type Window}}, Path=DataContext.AllowItemCommand}" ...
385
flq

これは、Silverlight 5でも機能します(おそらく以前のバージョンでも動作しますが、テストしていません)。私はこのような相対的なソースを使用し、うまく機能しました。

RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=telerik:RadGridView}"

6
sangers