2016-03-26 3 views
0

のDataContextのへの結合:WPF RibbonTabが、私はこのようなヘッダのDataTemplateの中でRibbonTab親にバインドしようとしていますリボン

<ribbon:RibbonTab.HeaderTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock Text="{Binding Path=DataContext,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ribbon:RibbonTab}}}" Margin="2"/> 
     </StackPanel> 
    </DataTemplate> 
</ribbon:RibbonTab.HeaderTemplate> 

私はribbontab後ろviewmodelnameをあるポイントを取得したいですテキストブロックに表示されます。名前がそこにポップアップすると、私はviewmodelのプロパティに到達する方法を知っています。しかし、viewmodelnameが表示されない場合は、バインドがOKではないと思われます。

どうすればよいですか?上記は明らかに機能しません。

答えて

1

x:NameをribbonTabに設定し、ElementNameを使用してバインドします。これは動作するはずです:RibbonTabがHeaderTemplateと同じVisualTreeにない嘘を行いますので、

<ribbon:RibbonTab x:Name="MyTab"> 
    <ribbon:RibbonTab.HeaderTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Path=DataContext, ElementName=MyTab}"/> 
      </StackPanel> 
      </DataTemplate> 
    </ribbon:RibbonTab.HeaderTemplate> 
</ribbon:RibbonTab> 

RelativeSourceは動作しません。


また、x:Referenceを使用して機能させることもできます。

<ribbon:RibbonTab x:Name="MyTab"> 
    <ribbon:RibbonTab.HeaderTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Path=DataContext, Source={x:Reference MyTab}}"/> 
      </StackPanel> 
      </DataTemplate> 
    </ribbon:RibbonTab.HeaderTemplate> 
</ribbon:RibbonTab> 
+0

次の文字列が見つかりました:System.Windows.Dataエラー:4:参照 'ElementName = MyTab'でバインドするソースが見つかりません。 BindingExpression:Path = DataContext; DataItem = null;ターゲット要素は 'TextBlock'(Name = '')です。対象のプロパティは 'テキスト'(タイプ '文字列') –

+0

奇妙な小さなサンプルで私のために働いた私はちょうど試した。あなたは 'Microsoft.Windows.Controls.Ribbon'コントロールを使用していますか? RibbonTabコントロールの 'MyTab'に' x:Name'を正しく設定しましたか? –

+0

x:Referenceメカニズムがトリックを行いました。ありがとうございました –

関連する問題