<ComboBox Name="ASelect" Width="180" Height="27" SelectedIndex="0" HorizontalContentAlignment="Center" VerticalAlignment="Center" SelectionChanged="ASelect_SelectionChanged">
<ComboBoxItem HorizontalContentAlignment="Right" VerticalContentAlignment="Center">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="a.png" Height="18" Width="22" />
<Label Content=" "/>
<TextBlock Width="150" Name="All"> All Values</TextBlock>
</StackPanel>
</ComboBoxItem>
<ComboBoxItem HorizontalContentAlignment="Left">
<StackPanel Orientation="Horizontal">
<Image Source="tick.png" Height="24" Width="24" />
<TextBlock Width="150"> New Values</TextBlock>
</StackPanel>
</ComboBoxItem>
<ComboBoxItem HorizontalContentAlignment="Left">
<StackPanel Orientation="Horizontal">
<Image Source="question.png" Height="24" Width="24" />
<TextBlock Width="150"> Old Values</TextBlock>
</StackPanel>
</ComboBoxItem>
</ComboBox>
如何从多列组合框中获取所选项目的值。我想在文本块中获取“所有值”的值。我尝试使用下面的代码,但它将stackpanel作为字符串,
string selectionString = ((ComboBoxItem)ASelect.SelectedItem).Content.ToString();
答案 0 :(得分:1)
给它起个名字
<TextBlock Name="m_txtAllValues" Width="150"> All Values</TextBlock>
然后
m_txtAllValues.Text = "yay it does work";
更新:对不起我错了:)
您有一个属性ASelect.SelectedIndex,表示选择了哪一个 所以你可以创建一个列表TextBlocks的集合(列表或字典f.e)并按顺序添加你的文本块(命名),然后
string txt = myCollectionOfTextBlocks[ASelect.SelectedIndex];
答案 1 :(得分:1)
您需要深入挖掘.... Go here...并使用FindChild方法在ComboBoxItem中查找TextBlock。但是,如果您没有为控件命名,那么您可能需要对其进行一些更改,以便您可以搜索M级深度或其他任何内容的第N个子控件...
一旦你有了孩子TextBlock,你只需使用.Text来获取它。
答案 2 :(得分:1)
您正在添加复杂类型(StackPanel)作为组合框的项目。当您访问组合框的SelectedItem属性时,您将返回StackPanel对象的实例。
这就是组合框知道它的物品的程度。它不知道StackPanel里面是什么。
就像Myermian所说,你需要以某种方式抓取视觉树来弄清楚你想要什么。
hacky方法是取回你返回的StackPanel实例并调用StackPanel.Children来获取它的孩子然后迭代它们并找到你想要的东西。但是,这是一种非常脆弱且通常不推荐的方法。
您真正想要做的是对组合框进行数据绑定,并将UI与列表中的数据分开。这样,无论项目的UI结构如何,您都可以访问所需的数据(文本框值)
答案 3 :(得分:1)
请遵循此代码
string typeID="WHT01";
for (int i = 0; i < cmbWHTypeId.Items.Count; i++)
{
EWareHouseTypes aWHType = (EWareHouseTypes)cmbWHTypeId.Items[i];
if (aWHType.WhtID == typeID)
{
cmbWHTypeId.SelectedIndex = i;
break;
}
}
有关详细信息,请访问此链接multi-column-combobox-in-c-wpf