c# - DataBinding C# ObservableCollection SerialPort 到 Combobox(SerialPort.getPortNames=> 返回字符串数组的方法)
问题描述
我需要将计算机中的可用端口列表绑定到 WPF 中的组合框。我正在使用 ObservableCollection。我做过
public class MainWindowVM
{
public ObservableCollection<String[]> ListOfAvaliablePorts { get; set; }
public MainWindowVM()
{
ListOfAvaliablePorts = new ObservableCollection<String[]>();
ListOfAvaliablePorts.Add(SerialPort.GetPortNames());
}
}
但是组合框 Output 上的输出是 String[] Array
我的 Xaml 代码是
<!--#region Combobox-->
<ComboBox
Name="portsCombobox" Width="80" Margin="50,0,0,0"
ItemsSource="{Binding ListOfAvaliablePorts}">
</ComboBox>
<!--#endregion-->
请帮我解决问题,以便我可以得到像 COM1 COM2 COM6 COM7 COM5这样的输出
解决方案
如果你想绑定一个字符串数组,那么它只是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);
}
}
推荐阅读
- python - k-means - 是否有可能用更高的 k 得到更差的结果?
- c++ - 复制矢量的最佳方法
- javascript - 将所有对象中的数据分组并推送到一个对象中
- c - 是什么导致 memcpy 和 strcpy 在复制 openssl BIGNUM 中的差异
- javascript - HTML Dropdown 禁用 Javascript 中的选项
- python - numpy 函数中的“忽略 nan”
- c++ - 微软的 std::thread 的实现与规范不兼容?
- c# - 从另一个服务获取数据时面临架构问题
- lua - 为什么使用键绑定器启动应用程序,它不平铺?
- python - 如何正确查看币安订单的订单状态