我有一个带有模板化内容的TabControl,如下所示:
<TabControl x:Name="Items" SelectedItem="{Binding ActiveItem}" TabStripPlacement="Left" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1">
<TabControl.ItemContainerStyle>
<!--Some style stuff-->
</TabControl.ItemContainerStyle>
<TabControl.Template>
<ControlTemplate TargetType="{x:Type TabControl}">
<!--Some structure stuff including a tabpanel and contentPresenter-->
</ControlTemplate>
</TabControl.Template>
<TabControl.ContentTemplate>
<DataTemplate>
<Button x:Name="MyButton" Visibility="{Binding x}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
包含此TabControl的视图使用类似于此的ViewModel:
public class MyPageViewModel : ScreenConductorViewModelBase<IMyTab>
{
public Visibility x = Visibility.Hidden;
}
我希望模板中按钮的可见性从我的父(?)ViewModel中拉出,但是它试图从项viewModel中检索x。
这对我有意义,但我不知道如何指定这个字段应该来自父母。
我尝试过一些东西,但似乎没有一件事能起作用:
{Binding x}
{Binding DataContext.x}
{Binding RelativeSource={RelativeSource TemplatedParent}, Path=x}
我确定这样做必须简单,但我似乎无法解决绑定语法
答案 0 :(得分:3)
尝试
<Button x:Name="MyButton"
Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}},
Path=DataContext.x}" />