找不到 Rosource myConverter

Rosource myConverter not found

我对这段代码有看法:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="../Recursos/Diccionarios/MyConvertersDictionary.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>
<DataGridTextColumn Header="MyColumn" Visibility="{Binding Converter={StaticResource MyConverter}}"/>

转换器:

public class MyConverter: IValueConverter
    {
    //CODE
        
    }




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


//I have this xalm file in the folder ../Recursos/diccionarios:


    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:conv="clr-namespace:MyApp.Converters"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
        <conv:MyConverter x:Key="MyConverter" />
    </ResourceDictionary>

我尝试在 Datagrid 列中使用转换器时的错误是找不到资源 MyConverter。

如果我在转换器中右键单击并转到定义,在 XAML 字典中,我收到无法加载文件或程序集 MyApp 版本 XXX culture=neutral 的错误。系统找不到指定的文件。

但是如果我在 XAML 字典中右键单击并转到定义,我会转到转换器,在 MyConverter.cs 文件中,我有转换器的实现。

此外,我已经意识到,当我尝试在 Datagrid 列中使用转换器时,IntelliSense 找到了转换器,我有一个包含所有转换器的列表,所以它也被 IntelliSense 找到了。

所以我不明白为什么会出现这个错误,如果当我在每种情况下转到定义时,我最终到达了转换器的实现,所以找到了。

不要在 ResourceDictionary Source 上使用相对路径,而是尝试使用 pack URI。我怀疑您 运行 遇到了运行时问题,构建二进制文件时相对路径可能不同。

所以对于你的情况,它看起来像这样:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Recursos/Diccionarios/MyConvertersDictionary.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>