0

以下のように、テンプレート化されたコンテンツを含む 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}

これを行うのは簡単だと確信していますが、バインディング構文を理解できないようです

4

1 に答える 1

3

試す

<Button x:Name="MyButton"
        Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}},
                             Path=DataContext.x}" /> 
于 2012-06-19T20:53:08.267 に答える