RelativeSource在ContentPresenter中返回null

时间:2016-09-14 08:31:04

标签: .net wpf

我的问题可以简化为这个简化的例子:

<TabControl>
    <TabItem Header="first">
        <Button Content="TestButton" />
    </TabItem>

    <TabItem Header="second">
        <ContentPresenter >
            <ContentPresenter.Content>
                <Button x:Name="button" 
                        CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=TabControl}}" 
                        Content="CommandParameter is null" Click="OnButtonClick" />
            </ContentPresenter.Content>
        </ContentPresenter>
    </TabItem>
</TabControl>

如果您选择第二个标签,则按下CommandParameter=null按钮。但如果IsSelected="True"最初设置为第二个TabItem,则CommandParameter具有正确的值。

使用ContentTemplate属性需要解决此问题。我也可以使用ContentControl(但不是我的情况,因为ContentPresenter在控件的样式模板中使用。)

  1. 因为TabControl和ContentPresenter在我的应用程序中广泛使用,我想知道这种行为的原因 - 任何想法?
  2. 还有哪些其他方法可以解决这个问题?

0 个答案:

没有答案