初始化字符串的ObservableCollection并给出端口列表。
我需要将我在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
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);
}
}