DataBinding C# ObservableCollection SerialPort to Combobox (SerialPort.getPortNames=>返回字符串数组的方法)



我需要将我在Computer中的可用端口列表绑定到WPF中的组合框。我正在使用ObservableCollection。我做得像

public class MainWindowVM
{
public ObservableCollection<String[]> ListOfAvaliablePorts { get; set; }
public MainWindowVM()
{
ListOfAvaliablePorts = new ObservableCollection<String[]>();
ListOfAvaliablePorts.Add(SerialPort.GetPortNames());       
}
}

但是组合框output上的输出是字符串[]数组

我的Xaml代码是

<!--#region Combobox-->
<ComboBox
Name="portsCombobox" Width="80" Margin="50,0,0,0" 
ItemsSource="{Binding ListOfAvaliablePorts}">
</ComboBox>
<!--#endregion-->

请帮我解决这个问题,这样我就可以得到这样的输出COM1 COM2 COM6 COM7 COM5

初始化字符串的ObservableCollection并给出端口列表。
public ObservableCollection<String> ListOfAvaliablePorts { get; set; }

ListOfAvaliablePorts = new ObservableCollection<String>(SerialPort.GetPortNames());

如果你想绑定一个字符串数组,那么它只需要ObservableCollection。您还需要实现INotifyPropertyChanged来引发属性更改。

你可以看看我的解决方案如下:

public class MainWindowVM : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private ObservableCollection<string> _ListOfAvaliablePorts;
public ObservableCollection<string> ListOfAvaliablePorts
{
get
{
return _ListOfAvaliablePorts;
}
set
{
if (value != _ListOfAvaliablePorts)
{
_ListOfAvaliablePorts = value;
OnPropertyChanged(nameof(ListOfAvaliablePorts));
}
}
}
public MainWindowVM()
{
var comPorts = SerialPort.GetPortNames();
_ListOfAvaliablePorts = new ObservableCollection<string>(comPorts);
}
}

最新更新