Why is the combo box cursor/caret moves to the beginning when down arrow is hit?

asked 2023-01-23T05:18:53.03+00:00
don bradman 371 Reputation points

In my app I have a combo box

<ComboBox
ItemsSource="{Binding ComboItems}"
SelectedItem="{Binding SelectedCBItem}"
StaysOpenOnEdit="True"
Text="{Binding SelectedCBItem, UpdateSourceTrigger=PropertyChanged}"
IsTextSearchEnabled="True"
IsEditable="True"

When I'm typing on the combo box and I hit the down arrow for some reason the caret/cursor moves to the beginning of the combo box.

How do I fix this?

I also have some styling implemented in my app.xaml file for the combo box's, not sure any of them are causing this

<!--ComboBox styling-->
<ControlTemplate
	x:Key="ComboBoxToggleButton"
	TargetType="{x:Type ToggleButton}">
	<Grid>
<Grid.ColumnDefinitions>
	<ColumnDefinition />
	<ColumnDefinition
Width="20" />
</Grid.ColumnDefinitions>
<Border
	x:Name="Border"
	Grid.ColumnSpan="2"
	CornerRadius="0"
	Background="#FF3F3F3F"
	BorderBrush="#FF97A0A5"
	BorderThickness="1" />
<Border
	Grid.Column="0"
	CornerRadius="0"
	Margin="1"
	Background="#FF3F3F3F"
	BorderBrush="#FF97A0A5"
	BorderThickness="0,0,1,0" />
<Path
	x:Name="Arrow"
	Grid.Column="1"
	Fill="White"
	HorizontalAlignment="Center"
	VerticalAlignment="Center"
	Data="M0,0 L0,2 L4,6 L8,2 L8,0 L4,4 z" />
	</Grid>
</ControlTemplate>
<ControlTemplate
	x:Key="ComboBoxTextBox"
	TargetType="{x:Type TextBox}">
	<Border
x:Name="PART_ContentHost"
Focusable="False"
Background="{TemplateBinding Background}" />
</ControlTemplate>
<Style
	x:Key="{x:Type ComboBox}"
	TargetType="{x:Type ComboBox}">
	<Setter
Property="SnapsToDevicePixels"
Value="true" />
	<Setter
Property="OverridesDefaultStyle"
Value="true" />
	<Setter
Property="ScrollViewer.HorizontalScrollBarVisibility"
Value="Auto" />
	<Setter
Property="ScrollViewer.VerticalScrollBarVisibility"
Value="Auto" />
	<Setter
Property="ScrollViewer.CanContentScroll"
Value="true" />
	<Setter
Property="MinWidth"
Value="120" />
	<Setter
Property="MinHeight"
Value="20" />
	<Setter
Property="Foreground"
Value="White" />
	<Setter
Property="Template">
<Setter.Value>
	<ControlTemplate
TargetType="{x:Type 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"
Content="{TemplateBinding SelectionBoxItem}"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
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="#FF3F3F3F"
Foreground="#76FF03"
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="#FF3F3F3F"
BorderThickness="1"
BorderBrush="#888888" />
	<ScrollViewer
Margin="4,6,4,6"
SnapsToDevicePixels="True">
<StackPanel
	IsItemsHost="True"
	KeyboardNavigation.DirectionalNavigation="Contained" />
	</ScrollViewer>
</Grid>
	</Popup>
</Grid>
<ControlTemplate.Triggers>
	<Trigger
Property="HasItems"
Value="false">
<Setter
	TargetName="DropDownBorder"
	Property="MinHeight"
	Value="95" />
	</Trigger>
	<Trigger
Property="IsEnabled"
Value="false">
<Setter
	Property="Foreground"
	Value="#888888" />
	</Trigger>
	<Trigger
Property="IsGrouping"
Value="true">
<Setter
	Property="ScrollViewer.CanContentScroll"
	Value="false" />
	</Trigger>
	<Trigger
SourceName="Popup"
Property="Popup.AllowsTransparency"
Value="true">
<Setter
	TargetName="DropDownBorder"
	Property="CornerRadius"
	Value="0" />
<Setter
	TargetName="DropDownBorder"
	Property="Margin"
	Value="0,2,0,0" />
	</Trigger>
	<Trigger
Property="IsEditable"
Value="true">
<Setter
	Property="IsTabStop"
	Value="false" />
<Setter
	TargetName="PART_EditableTextBox"
	Property="Visibility"
	Value="Visible" />
<Setter
	TargetName="ContentSite"
	Property="Visibility"
	Value="Hidden" />
	</Trigger>
</ControlTemplate.Triggers>
	</ControlTemplate>
</Setter.Value>
	</Setter>
</Style>
<!-- SimpleStyles: ComboBoxItem -->
<Style
	x:Key="{x:Type ComboBoxItem}"
	TargetType="{x:Type ComboBoxItem}">
	<Setter
Property="SnapsToDevicePixels"
Value="true" />
	<Setter
Property="Foreground"
Value="White" />
	<Setter
Property="OverridesDefaultStyle"
Value="true" />
	<Setter
Property="Template">
<Setter.Value>
	<ControlTemplate
TargetType="{x:Type ComboBoxItem}">
<Border
	Name="Border"
	Padding="2"
	SnapsToDevicePixels="true">
	<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
	<Trigger
Property="IsHighlighted"
Value="true">
<Setter
	TargetName="Border"
	Property="Background"
	Value="#EA80FC" />
	</Trigger>
	<Trigger
Property="IsEnabled"
Value="false">
<Setter
	Property="Foreground"
	Value="#888888" />
	</Trigger>
</ControlTemplate.Triggers>
	</ControlTemplate>
</Setter.Value>
	</Setter>
</Style>

Note: I'm trying to follow MVVM pattern

Windows Presentation Foundation
Windows Presentation Foundation
A part of the .NET Framework that provides a unified programming model for building line-of-business desktop applications on Windows.
2,170 questions
C#
C#
An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.
6,920 questions
{count} votes