如何在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>
答案 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,只要有可能,这不仅可以简化数据更新来回的大部分复杂性,而且更加清晰,可维护,当然还有单位可测试的代码。
希望这能为您提供一些想法。