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