231

ウィンドウに含まれるリスト(以下を参照)があります。ウィンドウには と のDataContext2 つのプロパティがItemsありAllowItemCommandます。

ウィンドウの に対して解決する必要がある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>
4

3 に答える 3

447

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

...Binding="{Binding RelativeSource={RelativeSource FindAncestor, 
AncestorType={x:Type Window}}, Path=DataContext.AllowItemCommand}" ...
于 2009-07-14T20:51:38.837 に答える
49

これも機能します:

<Hyperlink Command="{Binding RelativeSource={RelativeSource AncestorType=ItemsControl},
                             Path=DataContext.AllowItemCommand}" />

ListViewDataContextはから継承されるWindowため、この時点でも使用できます。
また、ListViewは同様のコントロール ( GridviewListBoxなど) と同様に のサブクラスでItemsControlあるBindingため、そのようなコントロールの は完全に機能します。

于 2016-04-24T09:16:49.000 に答える
10

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

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

于 2012-04-11T06:43:28.910 に答える