WPF中Combox控件提前在xaml里ComboBoxItem 中绑定批量数据 ,在MVVM模式下初始化显示选择的值,调用示例
时间: 2024-09-20 13:16:06 浏览: 45
在WPF中,如果你希望在ComboBox中一次性预加载大量数据(如ComboBoxItem),可以在XAML文件中直接定义它们并绑定到ViewModel的数据源。首先,假设你有这样一个数据模型类(如`DisinfectionTimeData`):
```csharp
public class DisinfectionTimeData
{
public string Label { get; set; }
public int Value { get; set; }
}
// 预先填充数据
List<DisinfectionTimeData> disinfectionTimes = new List<DisinfectionTimeData>
{
new DisinfectionTimeData { Label = "15", Value = 15 },
new DisinfectionTimeData { Label = "30", Value = 30 },
... // 其他数据
};
```
然后在XAML中创建ComboBox并绑定数据:
```xml
<ComboBox x:Name="disinfectionTimeComboBox"
ItemsSource="{Binding DisinfectionTimes}"
DisplayMemberPath="Label"
SelectedValuePath="Value">
<ComboBoxItem Content="{Binding Label}" />
</ComboBox>
```
在ViewModel中,你需要定义一个属性来存储`DisinfectionTimes`列表:
```csharp
private List<DisinfectionTimeData> _disinfectionTimes = disinfectionTimes;
public IEnumerable<DisinfectionTimeData> DisinfectionTimes
{
get { return _disinfectionTimes; }
// 初始化时可以在这里设置默认值,例如:
// set { _disinfectionTimes = value ?? disinfectionTimes; }
}
```
这样,在MVVM模式下,ComboBox会显示预设的`DisinfectionTimeData`中的`Label`,并且当你需要更新`DisinfectionTime`时,可以直接更改`DisinfectionTimes`列表的值,而不会影响已绑定的显示。
阅读全文