1

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

1 に答える 1

0

コメントに基づいて更新された回答を編集する

以下を追加

 < local:RowValueConverter x:key="rowValueConverter" />

 < UserControl.Resources>

以下を変更

Converter={local:RowValueConverter}

Converter={StaticResource rowValueConverter}

リソースをどこにも定義しておらず、既存のコードでリソースの代わりにクラス名を使用しようとしています


古い答え

変化する

xmlns:local="MySolution.GUI"

xmlns:local="using:MySolution.GUI"

また

xmlns:local="clr-namespace:MySolution.GUI"
于 2012-06-28T16:26:36.253 に答える