【发布时间】:2012-05-27 17:03:32
【问题描述】:
我正在尝试在 WPF 中实现可视化表单设计器。我有一个画布,用户可以在其中拖放一些控件(文本框、文本块、组合框、复选框、图像、按钮)。到目前为止,一切都很好。现在我正在尝试实现一个组合框,其中列出了用户放在画布上的所有控件(就像 VS 2008 一样)。
组合框显示控件的名称属性。它适用于除按钮和复选框之外的所有控件,我不知道为什么。 Combobox 绑定到 ObservableCollection 并且 Combobox 的 Item Collection 填充正确,但是当我选择 Button 或 Checkbox 时,名称不显示为 SelectedItem。所以这是我的绑定:
<ComboBox Name="comboBoxCurrentControls" IsEditable="false"
ItemsSource="{Binding AllFormControls}" DisplayMemberPath="Name"
SelectedValuePath="Name"
SelectedItem="{Binding Path=SelectedCtl, Mode=TwoWay}"
当您在 Codebehind 中使用 Buttons 简单地填充 ObservableCollection<T> 并在其上绑定一个 Combobox 时,您可以重现该问题。当您选择它时,组合框不会将按钮的名称显示为 SelectedItem。
有人可以向我解释这种行为或告诉我解决方法吗!?
提前致谢
克里斯
P.s:我也尝试使用ObservableCollection<FrameworkElement>,但没有帮助。
【问题讨论】:
-
显示什么而不是名称?
-
什么都没有。它只是空的......但是当组合框展开时,按钮/复选框的名称在列表中。
-
能否提供设置SelectedCtl的代码
-
它只是 ViewModel 类中的一个属性,当用户单击控件时设置。
标签: c# wpf data-binding button combobox