如何在WPF中获取组合框的选定Textblock项

时间:2017-08-09 17:31:01

标签: wpf

如何在WPF中获取组合框的选定Textblock项目?

这是我的代码

 <ComboBox Width="180" Name="comboBox">
                <ComboBoxItem>
                    <StackPanel Orientation="Horizontal">
                        <Label Background="Red"></Label>
                        <TextBlock Width="150">Apple</TextBlock>
                        <Label ></Label>
                    </StackPanel>
                </ComboBoxItem>
</ComboBox>

1 个答案:

答案 0 :(得分:0)

对于您的具体情况,以下代码是可能的方法之一,但要谨慎,此类代码可能无法涵盖所有​​可能的方案,例如,如果布局模板等有更改。:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var item = (comboBox.SelectedItem as ComboBoxItem).Content as StackPanel;
    TextBlock tbkValue = null;
    if (item != null)
    {
       tbkValue = (item as StackPanel).Children.Cast<UIElement>().ToList().Where(it => it.GetType() == typeof(TextBlock)).Cast<TextBlock>().FirstOrDefault();
    }
    if(tbkValue != null)
    {
       MessageBox.Show(tbkValue.Text);
    }
}

相反,我建议WPF强大的数据绑定方法可能会使用MVVM,只要有可能,这不仅可以简化数据更新来回的大部分复杂性,而且更加清晰,可维护,当然还有单位可测试的代码。

希望这能为您提供一些想法。