WPF的MVVM下的下拉框设计

以下只是本人开发过程中的经历和思考,仅供参考!

前端界面有两个下拉框

采用MVVM需要将下拉显示内容放在VM中实现,这里需要注意的是,在构建过程中发现在前端采用 <ComboBoxItem Content="XXX" />的形式,前端界面可以点击操作显示出下拉项,但是在VM端采用绑定的形式下拉项不出现。

<ComboBox  Height="23" Name="cmbTestItem" Width="150" Margin="10,2,0,2"
                                        IsEnabled="{Binding TestNameIsEnable}"
                                        ItemsSource="{Binding TestNameList}"
                                        SelectedItem="{Binding SelectedTestName}"
                                        DisplayMemberPath="."/>
<ComboBox  Height="23" Name="cmbPlanSelect" Width="110" Margin="20,2,0,2"
                                        IsEnabled="{Binding PlanSelectIsEnable}"
                                        ItemsSource="{Binding PlanSelectList}"
                                        SelectedItem="{Binding SelectedPlanSelect}"
                                        DisplayMemberPath="dTest1"/>

 此时CS端的代码如下:

public partial class BeamDoseTestView : UserControl
    {
        private BeamDoseTestVM _BeamDoseTestVM = new BeamDoseTestVM();
        public BeamDoseTestView()
        {
            InitializeComponent();
            this.DataContext = _BeamDoseTestVM;
        }
    }

VM文件代码,需要在该文件写绑定的事件,数据结构也可以放在该文件,如果下拉项绑定的数据是相关联的可以定义数据结构,先写定义好属性。

private bool _testNameIsEnable = true;
public bool TestNameIsEnable
 {
    get { return _testNameIsEnable; }
    set { SetField(ref _testNameIsEnable, value); }
}
private ObservableCollection<string> _TestNameList;
public ObservableCollection<string> TestNameList
{
   get { return _TestNameList; }
   set { SetField(ref _TestNameList, value); }
}
private string _SelectedTestName;
public string SelectedTestName
{
   get { return _SelectedTestName; }
   set { SetField(ref _SelectedTestName, value); }
}

随后定义的逻辑代码和显示代码放在函数里面实现,该函数最后在构造函数中调用。

 private void UpdateTaskConbobox()
 {
    TestNameList = new ObservableCollection<string>
            {
                "TEST1",
                "TEST2",
                "TEST3",
                "TEST4"
            };
 }

逻辑代码此处暂时未构建。

不正确之处,敬请批评指正。

补充一下新形式                                

TestNameList= new ObservableCollection<ComboBoxClass>
{
   new ComboBoxClass(){Value = 0, Name = "TEXT1" },
   new ComboBoxClass(){Value = 1, Name = "TEXT2" },
   new ComboBoxClass(){Value = 2, Name = "TEXT3" }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值