我使用IEnumerable<string>Variables
填充了组合框。
项目正确显示,并允许用户选择一个选项。
<ComboBox Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"
x:Name="ofmvar" IsTextSearchEnabled="True" Width="150" Margin="2,2,2,2"
ItemsSource="{Binding Variables}" SelectionChanged="log_SelectionChanged"
SelectedItem="{Binding SelectedVar, NotifyOnValidationError=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}"/>
大多数时候(98%)用户从列表中选择一个特定选项;我们称之为“A_Variable”。但偶尔他可以从组合框中选择一个不同的变量;我们称之为“B_Variable”。
当程序启动时,他希望组合框默认显示“A_Variable”作为选择..这可能吗?
这是定义SelectedVar
的方式:
public string SelectedVar
{
get { return _SelectedVar; }
set
{
if (_SelectedVar == value) return;
_SelectedVar = value;
OnPropertyChanged("SelectedVar");
}
}
public string _SelectedVar;
答案 0 :(得分:2)
由于SelectedItem
绑定到ViewModel的SelectedVar
,因此只需将SelectedVar
设置为ViewModel构造函数中的默认值。
答案 1 :(得分:1)
将SelectedVar
属性的值设置为&#34; A_Variable&#34;或者您要在视图模型类中选择的Variables
集合中的任何值:
class ViewModel
{
public ViewModel()
{
Variables = new List<string> { "A_Variable", "B_Variable" };
SelectedVar = "A_Variable"; //default selected value...
}
public IEnumerable<string> Variables { get; private set; }
private string _SelectedVar;
public string SelectedVar
{
get { return _SelectedVar; }
set
{
if (_SelectedVar == value) return;
_SelectedVar = value;
OnPropertyChanged("SelectedVar");
}
}
//...
}