Привязка данных C # ObservableCollection SerialPort в Combobox (SerialPort.getPortNames => Метод, который возвращает массив строк) - PullRequest
0 голосов
/ 08 ноября 2018

Мне нужно привязать список моих доступных портов в компьютере к комбинированному списку в WPF. Я использую ObservableCollection. Я сделал как

public class MainWindowVM
    {
      public ObservableCollection<String[]> ListOfAvaliablePorts { get; set; }

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

Но вывод в выпадающем списке 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

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

инициализирует ObservableCollection строки и дает список портов.

public ObservableCollection<String> ListOfAvaliablePorts { get; set; }


 ListOfAvaliablePorts = new ObservableCollection<String>(SerialPort.GetPortNames());
0 голосов
/ 08 ноября 2018

Если вы хотите связать массив строк, то это просто 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...