这样写是可以的,因为你在AllUnits属性的setter方法中将SZUnit和BZUnit合并成一个集合,并使用LINQ查询过滤掉空值和重复项。然后,你将结果存储在_AllUnits字段中,并触发PropertyChanged事件以通知UI更新。
以下是一个修正过的代码示例:
```csharp
public class MyViewModel : INotifyPropertyChanged
{
private MaterialStandard _materialStandard;
private List _allUnits;
public MyViewModel(MaterialStandard materialStandard)
{
_materialStandard = materialStandard;
}
public List AllUnits
{
get { return _allUnits; }
set
{
var units = new List { _materialStandard.SZUnit, _materialStandard.BZUnit };
_allUnits = units.Where(u => !string.IsNullOrEmpty(u)).Distinct().ToList();
OnPropertyChanged(nameof(AllUnits));
}
}
// Other properties and methods
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
```
在上面的代码中,我们在AllUnits属性的setter方法中将SZUnit和BZUnit合并成一个集合,并使用LINQ查询过滤掉空值和重复项。然后,我们将结果存储在_allUnits字段中,并将其公开为AllUnits属性。
当你需要在UI中显示ComboBox时,你可以将AllUnits属性绑定到ComboBox的ItemsSource属性上:
```xml
```
在上面的代码中,我们将AllUnits属性绑定到ComboBox的ItemsSource属性上,并将SelectedUnit属性绑定到ComboBox的SelectedItem属性上。
希望这些提示能够帮助你解决问题。