按钮单击Caliburn.Micro将项目添加到ComboBox

时间:2015-11-22 22:42:10

标签: c# caliburn.micro

我刚开始使用MahApps.Metro和Caliburn.Micro在C#编写我的简单应用程序,我遇到了问题。我对MVVM模型不太熟悉,所以我试图理解它。我想要做的是在单击按钮后点击ComboBox项目(按钮单击搜索COM端口并将COM添加到组合框)。你能告诉我怎么做吗?这是我的MainView.xaml的一部分:

notify

这是我的MainViewModel:

final JButton button = new JButton('click to continue');
button.setAction(new AbstractAction() {
  public void actionPerformed(ActionEvent ae) {
    synchronized (button) {
      button.notify();
    }
  }
});
JFrame jf = new JFrame("Window");
jf.getContentPane().add(button, BorderLayout.CENTER);
jf.setDefaultCloseOperation(...);
jf.pack();
jf.setVisible();
synchronized(button) {
  try {
    button.wait();
  } catch (InterruptedException ex) {
    System.out.println("Interrupted");
  }
}
System.out.println("After button clicked");

1 个答案:

答案 0 :(得分:1)

您需要"bind"控件ItemsSource的COM端口列表。

<ComboBox Width="235" 
          x:Name="COMPorts" 
          SelectedItem="{Binding SelectedPort}"
          ItemsSource="{Binding ComPorts}" />

并且不要忘记更新您的视图模型(添加observable collection个com端口名称)

public class MainViewModel : PropertyChangedBase
{
    // ...
    public MainViewModel() 
    {
      ComPorts = new ObservableCollection<string>();
    }
    public void RefreshCOM()
    {
        string[] ports = SerialPort.GetPortNames();
        foreach(var port in ports)
        {
           ComPorts.Add(port);
        }
    }

    public ObservableCollection<string> ComPorts {get; private set;}
    // ...
}