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