以下只是本人开发过程中的经历和思考,仅供参考!
前端界面有两个下拉框
采用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" }
};