2

我有一个包含 2 个项目的 WPF 解决方案,第一个(ResourcesLibrary)包含通用样式和通用资源。另一个是 WPF 应用程序。

我在 ResourcesLibrary generic.xaml文件中为 DataGridRows 创建了一个样式:

<Style x:Key="DGRowStyle" TargetType="{x:Type DataGridRow}">
    <Setter Property="ValidationErrorTemplate">
        <Setter.Value>
            <ControlTemplate>
                <Image Source="/Resources/stop.png"
                       ToolTip = "{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridRow}},
                       Path=(Validation.Errors),
                       Converter={StaticResource errorConverter]}}"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

我将 .cs 转换器文件添加到 ResourcesLibrary 项目:

namespace ResourceLibrary
{
    public class ErrorConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
        { 
            var errors = value as ReadOnlyObservableCollection<ValidationError>; 
            if (errors == null) 
                return ""; 
            return errors.Count > 0 ? errors[0].ErrorContent : ""; 
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
        { 
            throw new NotImplementedException(); 
        }
    }
}

并添加了引用和静态资源:

xmlns:my="clr-namespace:ResourceLibrary"

<!-- CONVERTERS -->
    <my:ErrorConverter x:Key="errorConverter" />

但是在运行时,在主项目中,我使用 ResourcesLibrary 中定义的 DataGridRow 样式时出现此错误:

{"找不到名为 'errorConverter]' 的资源。资源名称区分大小写。"}

我是否需要在我的解决方案中为我将使用的转换器添加另一个项目?

4

1 回答 1

0

感谢@Clemens,我删除了表达式“={StaticResource errorConverter]}”中多余的字符']',一切正常。

于 2012-05-08T08:11:38.790 回答