我有一个包含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'的资源'。资源名称区分大小写。”}
我是否需要在我的解决方案中为我将要使用的转换器提供另一个项目?
答案 0 :(得分:0)
感谢@Clemens我删除了表达式“= {StaticResource errorConverter]}中的额外字符']',这一切都正常。