找不到 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>
我对这段代码有看法:
<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>