Конвертер - Сколько я должен использовать? Есть ли другие способы в WPF с MVVM?

У меня иногда есть ярлыки, где содержимое динамически меняется со значениями некоторых объектов. Строки хоть и статичны, но их нужно менять в соответствии с моими атрибутами.

Самый простой способ - реализовать конвертер, который принимает мой объект и возвращает желаемую строку. Это привело бы ко многим конвертерам, которые имеют только одну задачу и не могут использоваться в разных случаях.

Я также мог бы изменить свой заголовок в моей ViewModel -> Это лучший подход?

2 ответа

Решение

В вашей модели представления вы можете иметь свойство динамической метки как таковое

String DynamicLabel 
{
    get
    {
         if ( this.x == 1 )
         {
              return staticString1;
         }
         //etc etc 
    }
}

Когда этикетку нужно менять, вам просто нужно позвонить

OnPropertyChanged("DynamicLabel")

и ваш xaml будет выглядеть так

<textblock text="{Binding Path = DynamicLabel , updateSourceTrigger = OnPropertyChanged}"/>

Я думаю, что это может быть полезным для вас, вы можете передать параметры для разных случаев и проверить условия в соответствии с параметром, который вы передали в конвертер.

Binding TestValue, Converter={StaticResource TestConverter}, ConverterParameter='Test'}

    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (parameter != null && parameter.Equals("Test"))
        { //Do some operation 
        }
    }

Используя параметр, вы можете выполнять различные операции в одном конвертере.

Другие вопросы по тегам