2011-03-16 17 views
1

以下は、現在持っているXAMLです。私はトグルボタンを持つことによってツリーをエミュレートしたいと思うし、リストビューはトグルボタンのチャッキング状態への可視性をバインドする。問題は、私は兄弟の子供にバインドする必要があります。これも可能ですか?WPF - 相対パスを使用したコントロールへのバインドSelf.Sibling.Child

トグルが祖先ではないため、このコードは機能しません。

  <StackPanel Orientation="Vertical"> 
       <StackPanel Orientation="Horizontal"> 
         <ToggleButton Name="tglBtn">+</ToggleButton> 
          <TextBlock>test</TextBlock> 
       </StackPanel> 
        <ListView Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type ToggleButton}}, Path=IsChecked, Converter={StaticResource boolToVis}}"> 
        <ListView.View> 
         <GridView> 
          <GridViewColumn Header="Thread" DisplayMemberBinding="{Binding thread_name}" /> 
          <GridViewColumn Width="Auto" Header="Created" DisplayMemberBinding="{Binding thread_created}" /> 
          <GridViewColumn Width="Auto" Header="Modified" DisplayMemberBinding="{Binding last_modified}" /> 
         </GridView> 
        </ListView.View> 
       </ListView> 
      </StackPanel> 

     </DataTemplate> 
     </ListBox.ItemTemplate> 


    </ListBox> 

答えて

1

あなたはトグルボタン

+0

elementnameを使用するつもりでしたが、同じ名前のすべてのトグルにバインドすると思っていましたが、試してみましたが、うまく動作します。 –

+0

ええ、私たちがDataTemplateの中で使って以来、そう考えているかもしれません:)しかし、通常のUserControlを考えて、ElementName Bindingをもう一度考えてみましょう。しかし、同じusercontrolがアプリケーションで何度もインスタンス化されることがあります。したがって、各DataTemplateのインスタンスには、それをカバーする独自のスコープがあります(私は思います!) –

+0

これが動作する限り、私はこの時点で不注意に@ジョビー!ありがとう。 –

1

にアクセスするためのバインディングのElementNameを使用することができますは、(それがのElementNameを使用して必要のないスタイルで再利用可能である。この問題を解決を私を見つけました)。私は例とスクリーンショットhereと完全な答えを書いた。

関連する問題