C# WPF组合框所选项目不可见

C# WPF组合框所选项目不可见,c#,wpf,combobox,foreground,C#,Wpf,Combobox,Foreground,在我的WPF应用程序UserControl中,我想设置组合框的背景。在寻求了大量的帮助和教程后,我可以如期完成,但现在无法在文本中看到所选项目。我的意思是,所选的项目可以在下拉列表中看到,但在组合框中不能看到任何未单击的下拉列表。 我尝试了许多变体来设置文本的主色调,但没有成功。也尝试过不同的网站,但无法让一切都可行。从这几天起我就陷入了困境。下面是我的代码 <LinearGradientBrush x:Key="NormalBrush" StartPoint="0,0" EndP

在我的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" />


有人能帮我知道什么设置是错误的/要添加的,以使其按要求工作,并在组合框中查看所选项目文本。非常感谢。

您是否在井眼直径装置上实施了财产变更

您还可以尝试改用SelectedItem吗

编辑-很抱歉再次查看您的样式,我认为ContentPresenter的样式有问题。我会再看一看,看能不能帮上忙

编辑-您的ContentPresenter错误,请将其更改为下面的

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

确保添加了内容=“{TemplateBinding SelectionBoxItem}”,您应该会看到selectedItem