最初のプロジェクト (ResourcesLibrary) には、共通のスタイルと共通のリソースが含まれています。もう 1 つは 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]' という名前のリソースが見つかりません。リソース名では大文字と小文字が区別されます。"}
使用するコンバーターのために、ソリューション内に別のプロジェクトが必要ですか?