Я разрабатываю страницу WPF, используя .NET, MVVM, без кода, используя PropertyChanged.На этой странице у меня есть DataGrid с большим количеством столбцов.В БД один из столбцов, назовем его HIGHLIGHT, будет иметь значения S или N. Если значение = S, вся строка будет выделена жирным шрифтом или ExtraBold.Случай N = Нормальный.
Я сделал эту работу, используя этот код в XAML:
<Style x:Key="TextRowStyle" TargetType="{x:Type TextBlock}" >
<Style.Triggers>
<DataTrigger Binding="{Binding Slab.Highlight}" Value="S">
<Setter Property="FontWeight" Value="ExtraBold"/>
</DataTrigger>
</Style.Triggers>
</Style>
Но, делая так, мне придется вставить КАЖДУЮ КОЛОННУ, этот код, чтобы сделатьэто работает (обратите внимание на ElementStyle):
<DataGridTextColumn Header="Test" Binding="{Binding SlabSeq}" ElementStyle="{StaticResource TextRowStyle}"/>
Что мне нужно:
В каждой таблице моей БД есть несколько столбцов, более 60, 70, и я ищу способчтобы сделать это проще, как StaticResource TextRowStyle, который я сделал ...
Еще одна вещь, которую я сделал, это был конвертер:
public class HighlightConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (System.Convert.ToChar(value).Equals("S"))
return FontWeights.ExtraBold;
else
return FontWeights.Normal;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return FontWeights.ExtraBold;
}
}
Я пытался сделатьконвертер внутри этих полей, используя:
<Page.Resources>
<vm:HighlightConverter x:Key="HighlightConverter"/>
</Page.Resources>
и в сетку:
<TextBlock FontWeight={Binding Slab.Highlight, Converter={StaticResource HighlightConverter}}"/>
Кто-нибудь знает, как я могу заставить эту работу?
С наилучшими пожеланиями, Густаво.