我有一个包含数据网格的WPF应用。我正在尝试使用自定义值转换器来确定单元格的字体颜色。
我在下面创建了这个类。
namespace MyNameSpace
{
public class AboveMeanToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double dValue = System.Convert.ToDouble(value);
double dParameter = System.Convert.ToDouble(parameter);
return (dValue > dParameter);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
在我的MainWindow xaml中,我有以下
<Window.Resources>
<local:AboveMeanToBoolConverter x:Key="meanToBool"/>
</Window.Resources>
第一期:
输入local后:intellisense显示我的类AboveMeanToBoolConverter。但是该行突出显示“名称AboveMeanToBoolConverter在名称空间clr-namespace中不存在:MyNameSpace”
第二期
我在app.xaml中拥有app和datagrid的所有样式。
下面是我的app.xaml中我正在设置DataGridRow的部分中的xaml片段。绑定行突出显示并告诉我“资源”meanToBool“无法解析”。那么如何在app.xaml中引用我的转换器?此外,我的二传手指的是一个边框(复制和粘贴来自正在工作的东西 - 如何更改这个以便字体改变颜色而不是单元格的背景?
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding MeanPost, Converter={StaticResource meanToBool}, ConverterParameter=0}" Value="0">
<Setter TargetName="DGR_Border" Property="Background" Value="{StaticResource brushRowSend}"/>
</DataTrigger>
</ControlTemplate.Triggers>
更新
回答以下评论。下面是我在本地定义的地方。
在我的MainWindow.xaml
中<Window x:Class="MyNameSpace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:local="clr-namespace:MyNameSpace"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStartupLocation="CenterScreen"
MinHeight="800" MinWidth="1000"
Height="800" Width="1200"
Background="LightSteelBlue" HorizontalAlignment="Center" VerticalAlignment="Center">
答案 0 :(得分:1)
您的第一个问题只与Visual Studio XAML编辑器相关。有时可能会因为不识别引用而感到痛苦。 我个人通过使用ReSharper来解决这个问题!
至于你的第二个问题,你明确地设计了一个Background
属性。如果您想要连续更改文字颜色,可以为RowStyle
创建DataGrid
:
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding MeanPost, Converter={StaticResource meanToBool}, ConverterParameter=0}" Value="0">
<Setter Property="Foreground" Value="{StaticResource brushRowSend}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
答案 1 :(得分:0)
您是否构建了解决方案?
它的构建是否正确??
我看到您的转换器代码中缺少一个右大括号。
这不是答案。由于我无法评论,我将其添加为答案。