猿问

WPF数据绑定:如何访问“父”数据上下文?

WPF数据绑定:如何访问“父”数据上下文?

我有一个窗口中包含的列表(见下文)。窗口DataContext有两个属性,ItemsAllowItemCommand

如何获取针对窗口的属性需要解析HyperlinkCommand属性DataContext

<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>


慕哥9229398
浏览 1344回答 3
3回答

BIG阳

你可以尝试这样的事情:...Binding="{Binding&nbsp;RelativeSource={RelativeSource&nbsp;FindAncestor,&nbsp; AncestorType={x:Type&nbsp;Window}},&nbsp;Path=DataContext.AllowItemCommand}"&nbsp;...

慕村225694

这也有效:<Hyperlink&nbsp;Command="{Binding&nbsp;RelativeSource={RelativeSource&nbsp;AncestorType=ItemsControl}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Path=DataContext.AllowItemCommand}"&nbsp;/>ListView将继承其DataContext从Window,所以它的使用在这一点上,太。并且,因为ListView,就像类似的控件(例如Gridview,ListBox等等)是其子类ItemsControl,Binding对于这样的控件将完美地工作。

临摹微笑

这也适用于Silverlight 5(也许更早,但我还没有测试过)。我使用了这样的相对来源,它工作得很好。RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=telerik:RadGridView}"
随时随地看视频慕课网APP
我要回答