获得wpf中的comboboxitem contentcontrol的值

时间:2017-03-31 07:36:44

标签: wpf combobox selecteditem contentcontrol

我是WPF的新手。 我想知道如果我想要的文本放在组合框内的控件内而不是直接放在组合框内,我怎样才能获得所选文本。 我知道这是非常基本的,但如果有人能为我提供简单快捷的解决方案,我将不胜感激

我的简单组合框代码如下:

<ComboBox x:Name="cmdTest">
    <ComboBoxItem>
        <TextBlock Text="RED" Background="RED" Foreground="White" FontFamily="Sans Serif" FontSize="14"/>
    </ComboBoxItem>
    <ComboBoxItem>
        <Grid Width="250">
            <TextBlock Text="GREEN" Background="GREEN" Foreground="White" FontFamily="Sans Serif" FontSize="14" Height="15"/>
        </Grid>
    </ComboBoxItem>
    <ComboBoxItem>
        <TextBlock Text="BLUE" Background="Blue" Foreground="White" FontFamily="Sans Serif" FontSize="14"/>
    </ComboBoxItem>
</ComboBox>

3 个答案:

答案 0 :(得分:0)

XAML:

<ComboBox Name="anyname" SelectionChanged="cmbColors_SelectionChanged">

<强> C#:

private void cmbColors_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
    MessageBox.Show(string.Format("Selected Item: {0}", anyname.Text));
}

答案 1 :(得分:0)

试试这个:

private void cmdTest_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    ComboBoxItem item = cmdTest.SelectedItem as ComboBoxItem;
    if (item != null)
    {
        TextBlock txt = item.Content as TextBlock;
        if (txt != null)
            MessageBox.Show(txt.Text + " is selected");
    }
}

答案 2 :(得分:0)

首先更改您的xaml代码:<ComboBox x:Name="cmdTest" HorizontalContentAlignment="Stretch" SelectedValuePath="Text"> <ComboBoxItem Padding="0" > <TextBlock Text="RED" Background="RED" Foreground="White" FontFamily="Sans Serif" FontSize="14"/> </ComboBoxItem> <ComboBoxItem Padding="0"> <TextBlock Text="GREEN" Background="GREEN" Foreground="White" FontFamily="Sans Serif" FontSize="14" Height="15"/> </ComboBoxItem> <ComboBoxItem Padding="0"> <TextBlock Text="BLUE" Background="Blue" Foreground="White" FontFamily="Sans Serif" FontSize="14"/> </ComboBoxItem> </ComboBox>

获取文本值后使用:

 var z = cmdTest.Text.ToString();
            MessageBox.Show(z);