我有一个组合框,如下面的代码所示。我希望在选择时在消息框中显示所选内容的名称。我正在尝试的是-
<dxb:BarEditItem.EditTemplate>
<DataTemplate>
<dxe:ComboBoxEdit x:Name="PART_Editor"
SelectedIndexChanged="OnSelectedIndexChanged" Name="comboBox">
<dxe:ComboBoxEdit.Items>
<system:String>Item1</system:String>
<system:String>Item2</system:String>
</dxe:ComboBoxEdit.Items>
</dxe:ComboBoxEdit>
</DataTemplate>
我如何在后端添加代码,以便在消息框中获取选定的名称?
3条答案
按热度按时间y1aodyip1#
是否要在SelectedIndexChanged事件上处理此事件?如果是,则可以获取触发该事件得组合框.
zfycwa2u2#
我不确定“选择的名称”是什么意思,所以我假设您希望获得组合框中显示的文本,它表示选定的项。
一旦你有了组合本身在你手中:
您有几种选择。最可靠的一种(在我看来)是使用
combo.DisplayText
属性,它是一个只读属性,保存应该在组合框中显示的实际文本(考虑DisplayMember
属性、DisplayTextConverter
属性和CustomDisplayText
事件)。另一个选项(在您的特定情况下)将是
(string)combo.SelectedItem
。但请注意,combo.SelectedItem
返回实际选定的项,而不是它的文本表示。只要项的类型是string
,上述方法就可以。如果不是,您将得到InvalidCastException
。此外,在这种情况下,* 您所得到可能不是您所看到的 *(如前面段落中所述,有几种方法可以修改显示的文本)。还有一个选项是
combo.Text
,它考虑DisplayMember
,但不考虑DisplayTextConverter
或CustomDisplayText
。编辑
结果发现,在引发
SelectedIndexChanged
时,DisplayText
属性还没有更新以反映新选择的项(这并不特别令人惊讶)。要解决这个问题,您应该“推迟”对DisplayText
值的检索。我个人会沿着以下思路进行操作(使用与combo关联的Dispatcher
):b1payxdu3#
只需键入
comboboxName.Text
,您将获得组合框的选定项