Невозможно связать мой класс Converter в моей команде XAML, передающей параметр - PullRequest
0 голосов
/ 14 февраля 2020

Это мой XAML, который пытается заставить мой ListView передать параметр в команду ViewModel.

xmlns:mvvm="http://www.galasoft.ch/mvvmlight"


<ListBox x:Name="MyListView" ItemsSource="{Binding Objects}">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <mvvm:EventToCommand Command="{Binding MyCommand}"
                                    PassEventArgsToCommand="True"
                                    EventArgsConverter="{StaticResource ParamConverter }"
                                    EventArgsConverterParameter ="{Binding Name}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

И это мой конвертер:

public class ParamConverter : IEventArgsConverter
{
    public object Convert(object value, object parameter)
    {
        var args = (SelectionChangedEventArgs)value;

        var name = parameter as string;

        return (string)name.ToString();
    }
}

Но я получил следующую ошибку:

Не удалось разрешить ресурс «ParamConverter»

1 Ответ

1 голос
/ 17 февраля 2020

Ваш конвертер не объявлен в XAML, вы должны добавить что-то вроде

<ListBox.Resources>
  <yournamespace:ParamConverter x:Key="ParamConverter"/>
</ListBox.Resources>

в ваши теги списка.

РЕДАКТИРОВАТЬ: я вообще не эксперт, так что терпите мои "неточные" условия, если таковые имеются. Я думаю, что вы что-то упускаете: нет волшебника c, который позволил бы вашему XAML знать о вашем C#. Вы должны сообщить XAML, что где-то в вашем коде (в ваше пространство имен ) будет объект ParamConverter , на который можно ссылаться внутри xaml с помощью ключа ParamConverter . Вы можете объявить свой ресурс локально внутри тегов ListBox, как предлагается, или при необходимости во внешней области видимости. Как только ресурс объявлен внутри XAML, вы можете получить к нему доступ через StaticResource .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...