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