Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 组合框SelectedItem未显示其值_C#_Wpf_Combobox - Fatal编程技术网

C# 组合框SelectedItem未显示其值

C# 组合框SelectedItem未显示其值,c#,wpf,combobox,C#,Wpf,Combobox,我有一个ComboBox,它的ComboBoxItem都是在运行时(以编程方式)生成的。每当出现组合框.SelectionChange时,程序将显示一个消息框,显示组合框的选定内容 private void cb2_SelectionChanged(object sender, SelectionChangedEventArgs e) { MessageBox.Show(cb2.SelectedItem.ToString()); } 然而,这是给我看的: System.Windows.

我有一个
ComboBox
,它的
ComboBoxItem
都是在运行时(以编程方式)生成的。每当出现
组合框.SelectionChange
时,程序将显示一个
消息框
,显示组合框的选定内容

private void cb2_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    MessageBox.Show(cb2.SelectedItem.ToString());
}
然而,这是给我看的:

System.Windows.Controls.ComboBoxItem:Hello World


我只想展示“Hello World”,但不想展示“System…”的东西。我尝试了SelectedValue,它也显示了相同的内容。

您需要将所选项目强制转换为ComboBoxItem,并仅获取其内容

MessageBox.Show((cb2.SelectedItem as ComboBoxItem).Content.ToString());

您需要将所选项目强制转换为ComboBoxItem并仅获取其内容

MessageBox.Show((cb2.SelectedItem as ComboBoxItem).Content.ToString());

您应该考虑使用绑定而不是事件处理程序。这使得代码更加清晰,演示和流程之间的关注点更加分离:

声明您的组合如下:

<ComboBox x:Name="cboCountries" DisplayMemberPath="Name" SelectedItem="{Binding SelectedCountry}" ItemsSource="{Binding Countries}" />

您应该考虑使用绑定而不是事件处理程序。这使得代码更加清晰,演示和流程之间的关注点更加分离:

声明您的组合如下:

<ComboBox x:Name="cboCountries" DisplayMemberPath="Name" SelectedItem="{Binding SelectedCountry}" ItemsSource="{Binding Countries}" />

我认为直接转换在这里会更好,因为如果转换不成功,例外情况更清楚,当使用
as
@svick:可能,我个人也不会这样做,因为在ComboBoxItems周围转换不是我们应该做的事。我认为直接转换在这里会更好,因为如果转换不成功,例外情况更清楚,当使用
as
@svick:可能,我也不会这样做,因为转换ComboBoxItems不是一个人应该做的事情。