2

最初のプロジェクト (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]' という名前のリソースが見つかりません。リソース名では大文字と小文字が区別されます。"}

使用するコンバーターのために、ソリューション内に別のプロジェクトが必要ですか?

4

1 に答える 1

0

@Clemens のおかげで、式「={StaticResource errorConverter]}」の余分な文字「]」を削除したところ、すべて正常に動作しました。

于 2012-05-08T08:11:38.790 に答える