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