SelectedIndex总是保持-1,而使用多个列在一个带标题的组合框

本文关键字:一个 组合 标题 SelectedIndex | 更新日期: 2023-09-27 18:13:35

我有一个带有标题的多列组合框。我已经用这个答案让它工作了。

下面是我使用的XAML:
<CollectionViewSource x:Key="GroupNamesWithCorrespondingEffectsCollection" Source="{Binding GroupNamesWithCorrespondingEffects}" />
<CompositeCollection x:Key="Items">
    <ComboBoxItem IsEnabled="False" Background="#FF2A2A2A" Foreground="White">
        <Grid TextElement.FontWeight="Bold" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition SharedSizeGroup="A" />
                <ColumnDefinition Width="50" />
                <ColumnDefinition SharedSizeGroup="B" />
            </Grid.ColumnDefinitions>
            <Grid.Children>
                <TextBlock Grid.Column="0" Text="Group Name" />
                <TextBlock Grid.Column="2" Text="Effect" />
            </Grid.Children>
        </Grid>
    </ComboBoxItem>
    <CollectionContainer Collection="{Binding Source={StaticResource GroupNamesWithCorrespondingEffectsCollection}}" />
</CompositeCollection>
<DataTemplate DataType="{x:Type helpers:GroupNameWithCorrespondingEffect}">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition SharedSizeGroup="A" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition SharedSizeGroup="B" />
        </Grid.ColumnDefinitions>
        <Grid.Children>
            <TextBlock Grid.Column="0" Text="{Binding GroupName}" />
            <TextBlock Grid.Column="2" Text="{Binding CorrespondingEffect}" />
        </Grid.Children>
    </Grid>
</DataTemplate>
<ComboBox ItemsSource="{DynamicResource Items}" 
          SelectedValue="{Binding GroupNameWithCorrespondingEffect}"
          SelectedValuePath="GroupID"
          DisplayMemberPath="GroupName" />

注意:

c#代码没有发布,因为我认为没有必要在这里发布。如果有人想看一下c#代码,请告诉我&我会贴出来的。

问题:

我想检查CodeBehind文件中的ComboBox的selecteindex。但是我注意到SelectedIndex总是保持-1。有什么问题吗?我该如何克服呢?

SelectedIndex总是保持-1,而使用多个列在一个带标题的组合框

您已将 SelectedValue 绑定到 GroupNameWithCorrespondingEffect ,我怀疑这是GroupNameWithCorrespondingEffect类型,同时将 SelectedValuePath 绑定到 GroupID ,该是int或uint。

SelectedValue和SelectedValuePath应该总是相同的类型。在你的例子中,你可以删除SelectedValuePath并直接绑定SelectedValue。

<ComboBox ItemsSource="{DynamicResource Items}" 
          SelectedValue="{Binding GroupNameWithCorrespondingEffect}"
          DisplayMemberPath="GroupName" />