2017-02-06 16 views
0

私はDataGridにいくつかのジョブが含まれています。 すべての仕事はRowDetailsに表示されています。 DataGridRowDetails - トグルの問題

は、ここで私は複数の問題を得た:

問題:なぜToggleButtonImageのみSelectedと最後の行に示されていますか?

これは私のxaml次のとおりです。

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <ToggleButton IsChecked="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, Path=DetailsVisibility, Converter={StaticResource BoolToVisConverter}, Mode=TwoWay}">         
     <ToggleButton.Style> 
      <Style TargetType="ToggleButton"> 
      <Style.Triggers> 
       <Trigger Property="IsChecked" Value="True"> 
       <Setter Property="Content"> 
        <Setter.Value> 
        <Image Source="..\Resources\ic_expand_less_48px.png" Height="16" Width="16" /> 
        </Setter.Value> 
       </Setter> 
       </Trigger> 
       <Trigger Property="IsChecked" Value="{x:Null}"> 
       <Setter Property="Content"> 
        <Setter.Value> 
        <Image Source="..\Resources\ic_expand_more_48px.png" Height="16" Width="16" /> 
        </Setter.Value> 
       </Setter> 
       </Trigger> 
       <Trigger Property="IsChecked" Value="False"> 
       <Setter Property="Content"> 
        <Setter.Value> 
        <Image Source="..\Resources\ic_expand_more_48px.png" Height="16" Width="16" /> 
        </Setter.Value> 
       </Setter> 
       </Trigger> 
      </Style.Triggers> 
      </Style> 
     </ToggleButton.Style> 
     </ToggleButton> 
    </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

答えて

1

スタイルがContentプロパティ(この場合の画像)のためのUIElementを使用する場合、それはその要素の単一のインスタンスを作成します。スタイルが複数のコントロールに適用されている場合、UIElementに複数の親があることができないため、いずれか1つのコンテンツだけが表示されます。

ほとんどの場合、カスタムテンプレートが使用されます。共有がfalseに設定されている

<Image x:Key="ExpandMoreImg" x:Shared="False" 
     Source="..\Resources\ic_expand_more_48px.png" Height="16" Width="16" /> 

<Trigger Property="IsChecked" Value="False"> 
    <Setter Property="Content" Value="{StaticResource ExpandMoreImg}"/> 
</Trigger> 

:私は非共有リソースを持つ別の方法を知っている(他の2つのトリガーに同じコード)

<Trigger Property="IsChecked" Value="False"> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Image Source="..\Resources\ic_expand_more_48px.png" Height="16" Width="16" /> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Trigger> 

:トグルボタンは、コンテンツ部分の外観をカスタマイズするContentTemplateプロパティを持っていますそれぞれの用途ごとにImageのインスタンスがあります

+0

問題2はMCVEがなく、私の意見では別の質問になるはずです – ASh

+0

ええ、それも分割について考えました。これまでのところあなたの助けに感謝します。 –

関連する問題