C# WPF使用IValueConverter并引用app.xaml中的类

C# WPF使用IValueConverter并引用app.xaml中的类,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我有一个包含datagrid的WPF应用程序。我正在尝试使用自定义值转换器来决定单元格的字体颜色 我已经创建了下面的类 namespace MyNameSpace { public class AboveMeanToBoolConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globaliza

我有一个包含datagrid的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;
         }
}
在我的主窗口xaml中,我有以下内容

<Window.Resources>
    <local:AboveMeanToBoolConverter x:Key="meanToBool"/>
</Window.Resources>

第一期:

输入local:intellisense后,我的类显示在meanstoboolconverter上。但是,该行突出显示为“名称空间clr namespace:MyNameSpace中不存在MeanstoBoolconverter上的名称”

第二期

我在app.xaml中有我的应用程序和datagrid的所有样式

下面是我正在设置DataGridRow样式的部分中我的app.xaml中的xaml片段。绑定行高亮显示,并告诉我“资源”meanToBool“无法解析”。那么我如何在我的app.xaml中引用我的转换器呢?另外,我的setter指的是一个边框(从正在工作的东西复制和粘贴)-如何更改它,使字体改变颜色而不是单元格的背景

 <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">

您构建了解决方案吗

它的建筑是否正确

我看到您的转换器代码中缺少右括号


这不是答案。由于我无法发表评论,我将其添加为答案。

您的第一个问题看起来与Visual Studio XAML编辑器相关。有时,由于无法识别引用,这可能会让您感到痛苦。 我个人通过使用ReSharper解决了这个问题

至于第二个问题,您正在明确设置
背景
属性的样式。如果要更改行中的文本颜色,可以为
数据网格创建
行样式

                        <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>


我知道我问这个问题可能很愚蠢,但既然你没有提到:
local
标记的定义在哪里?你应该在
窗口的属性上有类似
xmlns:local的内容=“clr namespace:MyNameSpace
对吗?如果是这样的话:转换器是否在另一个程序集中?问起来一点都不傻。我已经在帖子中添加了一个更新。在那里你可以看到我在哪里定义了我的本地标记,正如我在回答中读到的,看起来它运行正常。XAML编辑器有时会因为引用而令人痛苦。”(我用Resharper修复了这个问题,但不是免费的)。对于第二个问题,您的
DataTrigger
会专门更改背景。是
DataGridRow
ControlTemplate
还是
DataGridCell
?ControlTemplate是DataGridRow的。是的,它会生成,但是在app.xaml中,绑定行仍然突出显示为"资源MeansToBool无法解析,因为它构建得很好。datagrid正确显示了所有数据。但是,我希望根据单元格的值使用不同颜色的单元格不起作用。例如,如果属性MeansPost小于0,则应为红色。这不会发生您的第一个问题是r吗esolved now?你能提供你的xaml代码供我检查吗?谢谢你的代码。当我运行应用程序时,我在错误列表中看到资源意味着无法解析工具。它还说我的转换器类不存在于名称空间“clr namespace:MyNameSpace”中。如果你在your转换器中放置断点,它会通过吗?如果资源是实际上没有解决,代码应该抛出一个XamlParseException,并阻止您运行它。如果您可以很好地运行它,您应该没有问题,因为它不再加载了。在绑定{}之后,我将Value=0更改为Value=“True”。我发现发生了XamlParseException。PresentationFramework.dll{“System.Windows.Markup.XamlParseException”中发生了类型为“System.Windows.Markup.XamlParseException”的第一次意外异常,{“System.Windows.Markup.StaticResourceHolder”上的“提供值”引发了异常。“行号为“292”和行位置为“42”。}因此我的转换器类没有被命中,但应用程序不再加载