2011-06-23 12 views
0

私は、行のチェックボックスを選択/選択解除するチェックボックスを持つヘッダーを持つチェックボックス列を使用して、データグリッドを作成しようとしています。また、私はコードの背後にそれをやろうとしています。 これまで私は、データ・グリッドのタグをバインディングの中間者として使用し、データ・トリガーを使用してヘッダー・チェック・ボックスから行のチェック・ボックスを選択/選択解除できましたが、行は「死んで」、ヘッダーによってもう影響されません。また、私はすでにデータトリガーの代わりに片方向のバインディングを試してみましたが、同じ結果が得られました... バインディングを維持する方法を知っている人か、inxamlのみを探しているエフェクトを得るために別の人をペイプしますか?wpfデータグリッドチェックボックス列ヘッダーのすべてを選択してください/すべてを選択します

ヘッダー:

<CheckBox IsChecked="{binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}, Path=Tag}"/> 

列テンプレート:

<CheckBox> 
    <CheckBox.Style> 
     <Style TargetType="{x:Type CheckBox}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}, Path=Tag}" Value="True"> 
        <Setter Property="IsChecked" Value="True"/> 
       </DataTrigger> 
       <DataTrigger Binding="{binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}, Path=Tag}" Value="False"> 
        <Setter Property="IsChecked" Value="False"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </CheckBox.Style> 
</CheckBox> 

答えて

0

実際にその問題を解決するために非常に良いアイデアです。なぜそれがうまくいかないのか分かりません。

言っしようとするいくつかのものがあります:

が持っているどのような効果を確認するために(ないのDataGrid内の)通常のウィンドウの上にあなたのヘッダーチェックボックスと行のチェックボックスを置きます。

もう1つの方法は、ヘッダーのチェックボックス(たとえば<CheckBox Name="cbxHeader")の名​​前を付けてから、{Binding ElementName=cbxHeader Path=Tag}でバインドすることです。

また、テスト中(デバッグ> Windows>出力中、ビジュアルスタジオの[出力]ウィンドウ)で、バインドに失敗した理由に関するメッセージがないかどうかを確認してください。

また、偽のValueConverterを使用して、バインディングがまだ実行中であるかどうか試してみることもできます。

+0

コメントありがとうございます!私は現在、さまざまな問題のためにあなたの提案をチェックすることはできませんが、litteを推測したいと思います。 – SomeOtherGuy

+0

私は出力をチェックしてみましたが、バインディングエラーは見つかりませんでした。私は、列内の要素名、ビジュアルツリーの一部ではない何かを使用することに問題があると思います。とにかく私は個々の行をチェックすると、データトリガーと矛盾するので、それ以降は無視されると思います。私はWPFの初心者なので...論理的/可能ですか? – SomeOtherGuy

関連する問題