Я новичок в WPF и C#. У меня есть кнопка в моем графическом интерфейсе, которая представлена как изображение. Однако отображаемое изображение зависит от определенных условий. В зависимости от условий кнопка может быть одним из 5 изображений. Я закодирован так:Сопоставление значений свойств с условиями
Вид:
<Button x:Name="bShow" HorizontalAlignment="Left" Margin="200,0,0,0" VerticalAlignment="Top" Width="200" Height="200" >
<Image Source="{Binding myShowProp}"/>
недвижимости myShowProp определяется в MainWindow.xaml.cs:
public string myShowProp // This property decides what image appears inside the button
{
get { return privProp; }
set
{
privProp = value;
OnPropertyChanged("myShowProp");
}
}
Рутинная называется SetButtonImage
отвечает за логику, которая отображает определенный условий для определенных изображений. Он кодируется внутри MainWindow.xaml.cs как:
private void SetButtonImage()
{
if (/* condition1 */)
myShowProp = image1;
else if (/* condition2 */)
myShowProp = image2;
else if (/* condition3 */)
myShowProp = image3;
else if (/* condition4 */)
myShowProp = image4;
else
myShowProp = image5;
}
Можете ли вы показать мне лучший способ сделать выше, я не представляю себе повсеместное использование if
будучи лучший дизайн, кажется, что мне не хватает что нибудь.
Еще одна мотивация заключается в том, что у меня есть дизайнер, и если это что-то, что вы могли бы сделать в BLEND, на уровне свойств управления, то я предпочел бы, чтобы он сделал это в сочетании, вместо того, чтобы добавлять в код ,
P.S. Одна из вещей, которую я собираюсь сделать, - это реорганизовать мой существующий код в соответствии с парадигмой MVVM.
Возможно, вы можете использовать статут [switch] (https://msdn.microsoft.com/en-us/library/06tc147t.aspx), но я думаю, вы уже знаете. Проблема заключается в том, что «в зависимости от условий кнопка может быть одним из 5 изображений» связывает вас с этим синтаксисом. Это может быть законной необходимостью или симптомом плохого дизайна в другом месте, я не могу комментировать. –
Почему вы не используете стили для изменения содержимого кнопки для показа изображения? Аналогично, если условия могут быть добавлены в качестве триггеров для стиля. Основное намерение MVVM состоит в том, чтобы иметь наименьший объем кода в коде. – Versatile