点击Caliburn中的按钮.Micro将项目添加到组合框中
本文关键字:添加 组合 项目 Micro Caliburn 按钮 点击 | 更新日期: 2023-09-27 18:23:49
我刚开始用C#用MahApps.Metro和Caliburn.Micro编写我的简单应用程序,我遇到了一个问题。我对MVVM模型不是很熟悉,所以我正在努力理解它。我试图做的是在点击按钮后用项目填充组合框(点击按钮搜索COM端口并将COM添加到组合框)。你能告诉我怎么做吗?这是我的MainView.xaml:的一部分
<WrapPanel Orientation="Horizontal">
<WrapPanel Orientation="Vertical">
<Label Name="SelectCOM" Content="{x:Static r:Translations.SelectCOM}" FontWeight="Bold" FontSize="12" />
<ComboBox Width="235"
x:Name="COMPorts"
SelectedItem="{Binding SelectedPort}" />
</WrapPanel>
<Button Margin="10,0,0,0"
Width="70"
Content="{x:Static r:Translations.Refresh}"
HorizontalAlignment="Right"
cal:Message.Attach="RefreshCOM" />
</WrapPanel>
这是我的MainViewModel:
public class MainViewModel : PropertyChangedBase
{
IDevice Device = null;
private string selectedPort;
public void RefreshCOM()
{
string[] ports = SerialPort.GetPortNames();
}
public string SelectedPort
{
get
{
return this.selectedPort;
}
set
{
this.selectedPort = value;
this.NotifyOfPropertyChange(() => this.SelectedPort);
}
}
}
您需要将COM端口列表"绑定"到控件的ItemsSource。
<ComboBox Width="235"
x:Name="COMPorts"
SelectedItem="{Binding SelectedPort}"
ItemsSource="{Binding ComPorts}" />
别忘了更新你的视图模型(添加一个可观察的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;}
// ...
}