Combobox分配的选择项不显示wpf

时间:2018-03-15 10:08:41

标签: c# wpf combobox

我添加了动态组合框项目。当我选择项目时,它会正确显示。但是当重新加载控件时,我将所选项目分配给组合框,但它没有显示。

simpleComboBox.SelectedIndex = simpleComboBox.Items.IndexOf(SelectedItem);

显示正确的索引值但不显示值。

 <Style x:Key="ComboBoxStyle" TargetType="{x:Type ComboBox}">
    <Setter Property="Margin" Value="10"/>
    <Setter Property="Foreground" Value="{StaticResource ForegroundTextNormalBrush}" />
    <Setter Property="FontFamily" Value="{StaticResource TextFontFamily}"/>
    <Setter Property="FontSize" Value="{StaticResource FontSize16}"/>
    <Setter Property="Background" Value="{StaticResource ControlBackgroundBrush}"/>
    <Setter Property="BorderBrush" Value="{StaticResource BorderColorBrush}"/>
    <Setter Property="IsEditable" Value="True"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ComboBox}">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="50"/>
                    </Grid.ColumnDefinitions>
                    <TextBox Name="PART_EditableTextBox"
                                 Style="{StaticResource ComboBoxTextBoxStyle}"
                                 Height="{TemplateBinding Height}"/>

                    <ToggleButton Grid.Column="1" Margin="0" Style="{StaticResource ToggleButtonStyle}"
                                 Focusable="False"
                                 IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                                  ClickMode="Press">

                        <TextBlock Grid.Column="1" Style="{StaticResource ToggleButtonTextBlockStyle}"/>
                    </ToggleButton>

                    <ContentPresenter Name="ContentSite"
                                      ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                                      Content="{TemplateBinding SelectionBoxItem}"
                                      ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}"
                                      ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                                      VerticalAlignment="Center"
                                      HorizontalAlignment="Left"
                                      Margin="5,0,0,0"/>

                    <Popup Name="Popup"
                            Placement="Bottom"
                            IsOpen="{TemplateBinding IsDropDownOpen}"
                            AllowsTransparency="True" 
                            Focusable="False"
                            PopupAnimation="Fade">
                        <Grid Name="DropDown"
                                SnapsToDevicePixels="True"                
                                MinWidth="{TemplateBinding ActualWidth}"
                                MaxHeight="{TemplateBinding MaxDropDownHeight}">
                            <Border 
                                    x:Name="DropDownBorder"
                                    BorderThickness="3"
                                    CornerRadius="5"
                                    Background="{StaticResource AddControlTextBoxBackgroundBrush}"
                                    BorderBrush="{StaticResource AddControlInnerBorderBrush}"/>
                            <ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True">
                                <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
                            </ScrollViewer>
                        </Grid>
                    </Popup>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate >
                <TextBlock Style="{StaticResource SelectedTextBlockStyle}" Text="{Binding}" />
            </DataTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <Style TargetType="ComboBoxItem">
                <Setter Property="Foreground" Value="{StaticResource ForegroundTextNormalBrush}" />
                <Setter Property="FontFamily" Value="{StaticResource ArialFontFamily}"/>
                <Setter Property="FontSize" Value="24"/>
                <Setter Property="BorderThickness" Value="0"/>
            </Style>
        </Setter.Value>
    </Setter>
</Style>

1 个答案:

答案 0 :(得分:-1)

尝试设置 simpleComboBox.SelectedItem = SelectedItem;

并设置IsSynchronizedWithCurrentItem =“True”。

这将解决您的问题。