我刚刚开始使用WPF表单,而不是Windows Forms表单。 在Windows Forms表单中,我只需要执行以下操作:
ComboBox.SelectedValue.toString();
这在其他技术栈中是可行的,但在WPF中该怎么做呢?它似乎没有这个选项。
我刚刚开始使用WPF表单,而不是Windows Forms表单。 在Windows Forms表单中,我只需要执行以下操作:
ComboBox.SelectedValue.toString();
这在其他技术栈中是可行的,但在WPF中该怎么做呢?它似乎没有这个选项。
我找到了一种有些奇怪的方法来完成它,与旧的WF表单相比:
ComboBoxItem typeItem = (ComboBoxItem)cboType.SelectedItem;
string value = typeItem.Content.ToString();
嗯..我找到了一个更简单的解决方案。
String s = comboBox1.Text;
这样我就可以将选定的值作为字符串获取。
((ComboBoxItem)comboBox1.SelectedItem).Content.ToString();
应该是正确的代码。 - Bibaswann Bandyopadhyay我的 XAML 如下所示:
<ComboBox Grid.Row="2" Grid.Column="1" Height="25" Width="200" SelectedIndex="0" Name="cmbDeviceDefinitionId">
<ComboBoxItem Content="United States" Name="US"></ComboBoxItem>
<ComboBoxItem Content="European Union" Name="EU"></ComboBoxItem>
<ComboBoxItem Content="Asia Pacific" Name="AP"></ComboBoxItem>
</ComboBox>
这段内容展示了WPF组合框的名称以及其文本内容。要获取所选项的名称,我需要按照以下代码行:
ComboBoxItem ComboItem = (ComboBoxItem)cmbDeviceDefinitionId.SelectedItem;
string name = ComboItem.Name;
获取 WPF 组合框的所选文本:
string name = cmbDeviceDefinitionId.SelectionBoxItem.ToString();
请确保您在 XAML 文件中设置了 ComboBox 的名称:
<ComboBox Height="23" Name="comboBox" />
在你的代码中,可以使用SelectedItem
属性访问所选项目:
MessageBox.Show(comboBox.SelectedItem.ToString());
这要看你绑定到ComboBox的是什么。如果你绑定了一个名为MyObject的对象,并且有一个属性叫做Name,那么请按照以下步骤进行操作:
MyObject mo = myListBox.SelectedItem as MyObject;
return mo.Name;
如何评价这些:
string yourstringname = (yourComboBox.SelectedItem as ComboBoxItem).Content.ToString();
ComboBox.SelectionBoxItemStringFormat
有什么区别? - chriszo111SelectionChanged
事件处理程序:private void ComboBoxName_SelectionChanged(object send ...
{
string s = ComboBoxName.Items.GetItemAt(ComboBoxName.SelectedIndex).ToString();
}
我曾经遇到了类似的问题,在尝试本主题中建议的多个解决方案后发现,当ComboBox项目实际更新以显示新选择时(即总是在更改发生之前),SelectionChanged事件就已经触发了,因此它总是给出更改发生之前组合框的内容。
为了解决这个问题,我发现最好使用自动传递给事件处理程序的e参数,而不是直接从组合框加载值。
XAML:
<Window.Resources>
<x:Array x:Key="Combo" Type="sys:String">
<sys:String>Item 1</sys:String>
<sys:String>Item 2</sys:String>
</x:Array>
</Window.Resources>
<Grid>
<ComboBox Name="myCombo" ItemsSource="{StaticResource Combo}" SelectionChanged="ComboBox_SelectionChanged" />
<TextBlock Name="MyTextBlock"></TextBlock>
</Grid>
C#:
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string chosenValue = e.AddedItems[0].ToString();
}
<ComboBox SelectedValuePath="_Department"
DisplayMemberPath="_Department"
Height="23"
HorizontalAlignment="Left"
ItemsSource="{Binding}"
Margin="-58,1,0,5"
Name="_DepartmentComboBox"
VerticalAlignment="Center"
Width="268"/>
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string ob = ((DataRowView)comboBox1.SelectedItem).Row.ItemArray[0].ToString();
MessageBox.Show(ob);
}