#wpf #mvvm #checkbox
#wpf #mvvm #флажок
Вопрос:
У меня есть требование, для которого мне нужны флажки с несколькими состояниями в WPF…
Также, поскольку я использую MVVM, поэтому обработка привязки и команд должна соответствовать тому, что я буду использовать в своих представлениях.
Я видел флажок Multistate в DotNetNuke (сделанный в ASP.NET ) но как это сделать в WPF
некоторые входные данные в этом отношении будут полезны
Какой-нибудь пример будет отличным…
Комментарии:
1. На сайте нет тега для флажков Multistate … o_O
2. Итак … с какой частью вы боретесь?
3. Я должен показать изменение значка для 4 разных состояний Согласен, не согласен, может быть, мне все равно…..
4. Итак …. вы действительно ищете переключатели?
5. Ни один флажок не будет иметь четырех состояний…. Нажатие на него переключит четыре состояния: Согласен, Не согласен, Возможно, я не знаю…
Ответ №1:
Флажки имеют определенную функциональность (отмеченные, непроверенные и, необязательно, неопределенные).
Основываясь на вашем комментарии, я бы подумал, что было бы проще всего просто сделать это как кнопку. У меня сейчас нет времени тестировать реальный пример, но вот псевдокод, который поможет вам начать:
XAML
<Button Command="{Binding ToggleDecisionState}">
<Button.Content>
<Image Source="{Binding CurrentDecisionIcon}" />
<Button.Content>
</Button>
ViewModel (без учета деталей реализации MVVM)
enum Decisions
{
Agree,
Disagree,
Maybe,
DoNotKnow
};
public Decisions CurrentDecision
{
get {}
set {}
}
public RelayCommand ToggleDecisionStateCommand
{
// In here, call code to execute toggle
if (mCurrentDecision == Decisions.DoNotKnow)
CurrentDecision = Decisions.Agree;
else
CurrentDecision = 1;
}
public ImageSource CurrentDecisionIcon
{
get
{
ImageSource img = [some default image];
switch (mCurrentDecision)
{
case Decisions.Agree:
img = [path to Agree icon];
break;
// Other cases here
}
return img;
}
}
Ответ №2:
если вы хотите использовать флажок 3-state, вы должны изменить логическое значение behind (в ViewModel) на bool? Тип.
public bool? IsEnabled { get; set; }
и установите это свойство для флажка
IsThreeState = True;
Комментарии:
1. Я должен показать изменение значка для 4 разных состояний Согласен, не согласен, может быть, мне все равно…..