首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Caliburn.Micro中单击按钮将项添加到ComboBox

在Caliburn.Micro中单击按钮将项添加到ComboBox
EN

Stack Overflow用户
提问于 2015-11-22 22:42:10
回答 1查看 93关注 0票数 1

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

代码语言:javascript
运行
复制
<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:

代码语言:javascript
运行
复制
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);
            }
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-22 22:57:47

您需要将COM端口列表“约束”到控件的ItemsSource

代码语言:javascript
运行
复制
<ComboBox Width="235" 
          x:Name="COMPorts" 
          SelectedItem="{Binding SelectedPort}"
          ItemsSource="{Binding ComPorts}" />

并且不要忘记更新视图模型(添加一个com端口名称的可观察收集 )

代码语言:javascript
运行
复制
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;}
    // ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33861146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档