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}}"/>

converter:

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 version XXX culture=neutral的错误。系统找不到指定的文件

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

此外,我已经意识到,当我尝试在Datagrid列中使用转换器时,智能感知会找到转换器,我有一个包含所有转换器的列表,因此它也被智能感知找到。

所以我不明白为什么我得到这个错误,如果当我去定义在每种情况下,我终于到达转换器的实现,所以它被发现。

与其在ResourceDictionarySource上使用相对路径,不如尝试使用包URI。我怀疑您遇到了运行时问题,在构建二进制文件时相对路径可能不同。

对于你的例子,它看起来像这样:

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

最新更新