我在尝试在我的 xaml 用户控件中添加 ValueConverter 时遇到一些问题:
一开始我只是在添加对本地命名空间的引用时遇到了问题,经过一些编译/清理/重新编译后,它似乎终于看到了自己。尽管如此,它仍然说找不到我的 ValueConverter 类,以检查程序集是否被引用等等等等。
这是我的 XAML:
<UserControl x:Class="MySolution.GUI.StatusPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:MySolution.GUI"
mc:Ignorable="d" d:DesignHeight="400" d:DesignWidth="800">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MySolution.Styles;component/Styles.xaml" />
<ResourceDictionary Source="pack://application:,,,/MySolution.Styles;component/Icons.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<Style ...>
<Setter Property="Background" Value="{Binding Path=DataContext.Column2, Converter={local:RowValueConverter}}" />
</Style>
</UserControl.Resources>
...
</UserControl>
这是转换器:
namespace MySolution.GUI
{
public class RowValueConverter : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Color.FromRgb(255, 255, 255);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
}
现在,我不明白为什么它一直说标签“RowValueConverter”在 XML 命名空间“clr-namespace:MySolution.GUI”中不存在
我怎样才能解决这个问题?
谢谢
编辑:XAML 文件的当前状态
...
xmlns:local="using:MySolution.GUI"
mc:Ignorable="d" d:DesignHeight="400" d:DesignWidth="800">
<UserControl.Resources>
<local:RowValueConverter x:Key="rowValueConverter" />
<ResourceDictionary>
...
...
<Setter Property="Background" Value="{Binding Path=DataContext.Column2, Converter={StaticResource rowValueConverter}}" />
...