Gus*_*ves 3 c# wpf datagrid mvvm
我正在使用.NET,MVVM开发一个WPF页面,没有代码隐藏,使用PropertyChanged.在这个页面中,我有一个包含很多列的DataGrid.进入DB,其中一个列,我们称之为HIGHLIGHT,将具有值S或N.如果value = S,则整行将为Bold或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>
Run Code Online (Sandbox Code Playgroud)
但是这样做,我将不得不放入每个列,这段代码使它工作(注意ElementStyle):
<DataGridTextColumn Header="Test" Binding="{Binding SlabSeq}" ElementStyle="{StaticResource TextRowStyle}"/>
Run Code Online (Sandbox Code Playgroud)
我需要什么:
我的数据库的每个表有几个列,超过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;
}
}
Run Code Online (Sandbox Code Playgroud)
我试图在这些字段中制作一个转换器,使用:
<Page.Resources>
<vm:HighlightConverter x:Key="HighlightConverter"/>
</Page.Resources>
Run Code Online (Sandbox Code Playgroud)
进入网格:
<TextBlock FontWeight={Binding Slab.Highlight, Converter={StaticResource HighlightConverter}}"/>
Run Code Online (Sandbox Code Playgroud)
有谁知道我怎么能做这个工作?
最好的问候,古斯塔沃.
为什么你不在DataGrid.Resources中创建一个"本地"样式.我是否认为整行必须是粗体(S)或正常(N)?
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}" >
<Setter Property="FontWeight" Value="Normal"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Slab.Highlight}" Value="S">
<Setter Property="FontWeight" Value="ExtraBold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,所有单元格都是正常的,但如果数据行有Slab.Highlight = S,则所有单元格都是粗体.代码未经过测试.也许你必须添加TextBlock.Fontweight或类似的东西.
| 归档时间: |
|
| 查看次数: |
7989 次 |
| 最近记录: |