Конвертер - Сколько я должен использовать? Есть ли другие способы в 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
}
}
Используя параметр, вы можете выполнять различные операции в одном конвертере.