WPF DataGrid に条件付き書式を適用しようとしています。要件は次のとおりです。グリッド上の任意のセルで、コンテンツが整数の場合、表示形式は小数点以下 0 桁にする必要があります。内容に小数点以下の桁数がある場合は、stringformat で定義されたデフォルト値で表示します。
この種の条件付き書式設定をどのように達成できるかについて、誰かが考えを持っていますか? 小数の存在を確認できるコンバーターを作成しましたが、これを XAML でセル スタイルまたはテキスト列に適用する方法を理解できませんでした。
セル スタイル - これは私が定義したいスタイルです
<Style x:Key="MyCellStyle" TargetType="DataGridCell">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
グリッド列 - この列に適用されるスタイルを適用します
<DataGridTextColumn x:Key="ColumnName"
Header="ColumnName"
SortMemberPath="MyColumnSort"
Binding="{Binding myColBinding, StringFormat={}{0:N2}}"
IsReadOnly="True"
Width="40" />
コンバーター - このコンバーターを使用して、このスタイルが適用されるかどうかを判断します。
public class NoDecimalConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int converted;
int.TryParse(value.ToString(), out converted);
value.ToString();
return int.TryParse(value.ToString(), out converted);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
以下のようにセル スタイルにデータトリガーを追加して実行しようとしましたが、「型 'System.Windows.Controls.DataGridCell' でスタイル プロパティ 'StringFormat' が見つかりません」というエラーが表示されました。
<Style x:Key="MyCellStyle" TargetType="DataGridCell">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Style.Triggers>
<DataTrigger Binding="{Binding NoDecimalConvertor}" Value="False" >
<Setter Property="StringFormat" Value="true" />
</DataTrigger>
</Style.Triggers>
</Style>
私はこれに対して何日も頭を悩ませてきたので、これにアプローチする最善の方法についてのガイダンスをいただければ幸いです。