djee 发表于 2016-3-21 17:10:09

WPF组合框绑定

我正在尝试根据AutoCAD变量“LUNIS”更新调色板中的组合框内容。因此,每当“LUNIS”更改时,我的组合框内容也会更改...此外,每当用户更改当前绘图时,它都需要更新/检查AutoCAD变量“LUNIS”...关于如何实现这一点的任何建议?谢谢!
**** Hidden Message *****

n.yuan 发表于 2016-3-22 09:44:22

嗯,你显然需要有一个实现INotifyPropertyChanged接口的ViewModel,并公开一个值为“LUNITS”的属性。因为您希望使用COMBOBOX,这意味着您希望在一个预先确定的值列表中更改LUNIT值。因此,ViewModel也可以提供一个LUNIT值的列表(“Double”类型),作为ComboBox的“ItemsSource”,或者您可以在XAML中对ComboBox的项目列表进行硬编码,如果预定义的列表没有任何变化的话。
然后,在您的ViewModel中,您可能需要处理AutoCAD的SystemVariableChanged事件以监视LUNIT是否更改,当LUNIT更改时,绑定到ComboBox的SelectedValue/Item的ViewModel属性将设置并触发ViewModel中的OnPropertyChange,以便通知UI并自动更新ComboBox。

djee 发表于 2016-3-22 11:20:50

基于“LUNS”变量(英制或公制),我的组合框让用户选择一组预定义的公制或英制文本大小...因此,如果“LUNS”是公制的,我的组合框应该显示公制文本大小的选择(2.0mm、2.5mm、3.0mm、5.0mm)。如果“LUNS”是英制的,我的组合框应该显示英制文本大小的选择(5/64、3/32、1/8、9/64、13/64)。我必须深入研究MVVM模式...关于如何非常感谢你的任何建议n.yuan,一如既往,你有很大的帮助!

gile 发表于 2016-3-22 12:37:10

感谢您的澄清!我现在正在查看您在http://cadxp.com/topic/42380-conversionpalette/上创建的相关PDF文件。确实非常好!

djee 发表于 2016-3-22 15:17:02

在你看来,我必须考虑实现“ICommand”界面吗?

gile 发表于 2016-3-22 15:39:04


如果要将控件(通常是按钮)绑定到操作,则需要实现ICommand。

djee 发表于 2016-3-22 15:52:43

如果你要去MVVM,那么执行ICommand是必要的。任何开始学习WPF/MVVM的人都应该创建一个RelayCommand类,并把它贴在你的工具栏上或放在一个文件夹中,以便在每个使用WPF的项目中使用
页: [1]
查看完整版本: WPF组合框绑定