我刚开始使用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");
答案 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;}
// ...
}