我有以下Combobox
:
<ComboBox x:Name="Colors" FontSize="20">
<ComboBoxItem Background="#46d6db" Tag="#46d6db">Blue</ComboBoxItem>
<ComboBoxItem Background="#FDB75B" Tag="#FDB75B">Orange</ComboBoxItem>
<ComboBoxItem Background="#51B749" Tag="#51B749">Green</ComboBoxItem>
</ComboBox>
现在你怎么看到我有三个具有特定Tag
属性的ComboBoxItems。这里的tag属性是颜色的值。
我需要知道的是:如何通过Tag属性获取特定ComboBoxItem的索引?
我会尝试更清楚地解释它:假设我有一个名为color
的字符串作为值#FDB75B
,现在我需要找到具有相同Tag
的ComboBox项目并且特别考虑这个ComboBoxItem
的位置。
string color = "#FDB75B";
//In this way I get the Tag property of the selected item
((ComboBoxItem)Colors.SelectedItem).Tag.ToString();
现在我需要做相反的情况,找到标记为ComboBoxItem
的{{1}}索引,并自动选择它,如下:
#FDB75B
这可能吗?
答案 0 :(得分:3)
使用linq查询并查找。这是一个示例代码
PID Val1 Val1Total
---------------------
1 10 20 'See how both (1) columns have the same total
2 10 10
1 10 20 'See how both (1) columns have the same total
4 10 10
3 10 10
答案 1 :(得分:1)
您可以遍历该集合并选择如下:
string tagColor = "#51B749";
int foundIndex = -1;
foreach (ComboBoxItem item in Colors.Items)
{
if (item.Tag.ToString() == tagColor)
{
foundIndex = item.TabIndex;
}
}
答案 2 :(得分:1)
如果您只是想以编程方式选择项目,可以设置SelectedValuePath
并以此方式使用它。这是我的测试XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ComboBox x:Name="Colors" FontSize="20" Grid.Row="0" SelectedValuePath="Tag">
<ComboBoxItem Background="#46d6db" Tag="#46d6db">Blue</ComboBoxItem>
<ComboBoxItem Background="#FDB75B" Tag="#FDB75B">Orange</ComboBoxItem>
<ComboBoxItem Background="#51B749" Tag="#51B749">Green</ComboBoxItem>
</ComboBox>
<StackPanel Orientation="Horizontal" Grid.Row="2">
<Button x:Name="ButtonSet" Click="ButtonSet_Click" Content="Set Selection" />
<Button x:Name="ButtonDisplay" Click="ButtonDisplay_Click" Content="Display" />
</StackPanel>
</Grid>
对于ButtonSet
,它只是:Colors.SelectedValue = "#FDB75B";
对于ButtonDisplay
,它是:MessageBox.Show("Selected: " + Colors.SelectedValue);