WPF Combobox Выбранный элемент не виден

В моем приложении WPF UserControl я хочу установить фон поля со списком. После поиска большого количества помощи и учебных пособий я смог добиться этого, как и ожидалось, но теперь не могу видеть выбранный элемент в тексте. Я имею в виду, выбранный элемент можно увидеть в раскрывающемся списке, но не в поле со списком, когда ни одна капля не нажата. Я пробовал много вариантов, чтобы установить основной цвет текста, но безуспешно. Также пробовал через разные сайты, но не мог получить все работоспособным. Застрял плохо с днями на этом. Ниже мой код.

    <LinearGradientBrush x:Key="NormalBrush" StartPoint="0,0" EndPoint="0,1">
        <GradientBrush.GradientStops>
            <GradientStopCollection>
                <GradientStop Color="#106594" Offset="0.0"/>
                <GradientStop Color="LightYellow" Offset="1.0"/>
            </GradientStopCollection>
        </GradientBrush.GradientStops>
    </LinearGradientBrush>

    <SolidColorBrush x:Key="WindowBackgroundBrush" Color="#106594" />

    <ControlTemplate x:Key="ComboBoxToggleButton" TargetType="ToggleButton">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition Width="20" />
            </Grid.ColumnDefinitions>
            <Border x:Name="Border" Grid.ColumnSpan="2" CornerRadius="2"
                Background="{StaticResource NormalBrush}" BorderThickness="1" />
            <Border Grid.Column="0" CornerRadius="2,0,0,2" Margin="1" 
                Background="{StaticResource WindowBackgroundBrush}" BorderThickness="0,0,1,0" />
            <Path x:Name="Arrow" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"
                Data="M 0 0 L 4 4 L 8 0 Z" Fill="Black"/>
        </Grid>
    </ControlTemplate>

    <ControlTemplate x:Key="ComboBoxTextBox" TargetType="TextBox">
        <Border x:Name="PART_ContentHost" Focusable="False" Background="{TemplateBinding Background}"  />
    </ControlTemplate>

    <Style x:Key="{x:Type ComboBox}" TargetType="ComboBox">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ComboBox">
                    <Grid>
                        <ToggleButton Name="ToggleButton" Template="{StaticResource ComboBoxToggleButton}" 
                            Grid.Column="2" Focusable="false" 
                            IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}"
                            ClickMode="Press" >
                        </ToggleButton>
                        <ContentPresenter Name="ContentSite" IsHitTestVisible="False" 
                            Margin="3,3,23,3" VerticalAlignment="Center" HorizontalAlignment="Left" />
                        <TextBox x:Name="PART_EditableTextBox" Style="{x:Null}" 
                            Template="{StaticResource ComboBoxTextBox}" HorizontalAlignment="Left" 
                            VerticalAlignment="Center" Margin="3,3,23,3" Focusable="True" 
                            Background="Transparent" Foreground="{TemplateBinding Foreground}" Visibility="Hidden" 
                            IsReadOnly="{TemplateBinding IsReadOnly}"/>

                        <Popup  Name="Popup" Placement="Bottom" IsOpen="{TemplateBinding IsDropDownOpen}"
                            AllowsTransparency="True" Focusable="False" PopupAnimation="Slide">
                            <Grid Name="DropDown" SnapsToDevicePixels="True" MinWidth="{TemplateBinding ActualWidth}"
                                MaxHeight="{TemplateBinding MaxDropDownHeight}">
                                <Border x:Name="DropDownBorder" Background="White" BorderThickness="1"/>
                                <ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True">
                                    <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
                                </ScrollViewer>
                            </Grid>
                        </Popup>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

        <Style.Triggers>
        </Style.Triggers>
    </Style>

</UserControl.Resources>

ИСПОЛЬЗОВАНИЕ:

   <ComboBox ItemsSource="{Binding MtrCm}" SelectedValue="{Binding WellboreDiameter_Unit, Mode=TwoWay}" Grid.Row="1" Height="23" HorizontalAlignment="Right" Margin="0,26,249,0" x:Name="cboWellDiameter" VerticalAlignment="Top" Width="120" />

Может кто-нибудь помочь мне узнать или какой параметр является неправильным / должен быть добавлен, чтобы сделать его работоспособным по мере необходимости и увидеть текст выбранного элемента в поле со списком. Большое спасибо.

1 ответ

Решение

Реализуете ли вы измененную собственность на WellboreDiameter_Unit?

Также вы можете попробовать использовать SelectedItem вместо этого?

Изменить - Извините, снова глядя на ваш стиль, я думаю, что что-то не так со стилем для ContentPresenter. Я посмотрю еще раз и посмотрю, смогу ли я помочь

Изменить - Ваш ContentPresenter не так, измените его на ниже

<ContentPresenter Name="ContentSite" IsHitTestVisible="False" 
Margin="3,3,23,3" VerticalAlignment="Center" HorizontalAlignment="Left" 
Content="{TemplateBinding SelectionBoxItem}"/>

Убедитесь, что вы добавили Content="{TemplateBinding SelectionBoxItem}", и вы должны увидеть selectedItem

Другие вопросы по тегам