2017-02-27 8 views
1

私は記事のコレクションを持っていますが、そのうちのいくつかは価格を持っています。XAML DataGridTextColumn:条件がfalseのときに空のセルを表示します。

価格が利用可能である場合には価格はデフォルト値が0である記事では不可能であると私はそれが中に表示したくない場合は、私は私のデータグリッドは、それが0

だ場合でも、それを表示したいですデータグリッドとセルは読み取り専用にする必要があります。

<DataGridTextColumn Header="PU" Binding="{Binding PU, UpdateSourceTrigger=PropertyChanged}"> 
    <DataGridTextColumn.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Mesurage.HasPrice}" Value="False"> 
        <Setter Property="Focusable" Value="False"/> 
        <Setter Property="TextBlock.Text" Value="{Binding PU, StringFormat=0;;#, UpdateSourceTrigger=PropertyChanged}"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGridTextColumn.CellStyle> 
</DataGridTextColumn> 

私は0を非表示にするStringFormatを使用しますが、それはまだ私のグリッドでそれを示しています。

は、これは私が試したものです。 IsReadOnlyプロパティはトリガで変更できないため、代わりにFocusableプロパティを使用します。

XAMLでのみ必要な結果を得る方法はありますか?ありがとうございました。入力

を無効にするにはfalseIsEnabledを設定してみてください

答えて

0

TransparentForegroundを設定します。0値が存在しますが、表示されていない

<DataTrigger Binding="{Binding Mesurage.HasPrice}" Value="False"> 
    <Setter Property="IsEnabled" Value="False"/> 
    <Setter Property="Foreground" Value="Transparent"/> 
</DataTrigger> 
+0

ありがとうございました!それがトリックでした。私はForeGroundをWhiteに設定しようとしましたが、行が選択されたときの値を見ることができました。私はそれが透明を取ることができるか分からなかった価値がある。 – Hugo

+0

フォアグラウンドは 'Brush'型のプロパティです。 "透明"、 "赤"、 "緑"、 "青"の文字列などをとり、それらを「SolidColorBrush」に変換することができます。他のタイプのブラシ、LinearGradientBrushを使うことができます。特別な '{x:Null} '値もあります(xamlには' null'が相当します)。透明/ x:ヌルは要素を隠すのによく使用されます – ASh

+0

私の答えが助けられたら、それを受け入れたとマークしてください – ASh

関連する問題