Я пытаюсь применить некоторое условное форматирование в WPF DataGrid. Требование следующее. Для любой ячейки сетки, если содержимое является целым числом, формат отображения должен быть нулевым десятичным разрядом. Если содержимое имеет десятичные разряды, то отобразите их до значения по умолчанию, определенного в stringformat.Условное форматирование в WPF DataGridCell
Есть ли у кого-нибудь идеи относительно того, как я мог бы добиться такого условного форматирования? Я написал конвертер, который может проверить наличие десятичных знаков, но мне не удалось разобраться, как я смогу применить это в своем XAML к моему стилю ячейки или текстовому столбцу.
Cell Style - Это стиль, который я хотел бы определить
<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" />
Converter - Я хотел бы использовать это конвертер, чтобы определить, применяется ли этот стиль.
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();
}
}
Я пытался сделать это, добавив DataTrigger к моему стилю ячейки, как показано ниже, но я получил сообщение об ошибке с указанием «не может найти свойство стиля„StringFormat“по типу„System.Windows.Controls.DataGridCell“. "
<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>
Я стучал голову против этого в течение нескольких дней, так какие-либо указания было бы оценены, чтобы наилучшим образом подходить к этому.
спасибо. Это работало именно так, как мне было нужно. – DB101