未验证 提交 69c29d1d 编写于 作者: N Nicolai Henriksen 提交者: GitHub

Ensure clear button does not overlap editable text in ComboBox (#3279)

* Ensure clear button does not overlap editable text in ComboBox

* Added comment on the initial offset
上级 06f781ad
...@@ -5,13 +5,15 @@ namespace MaterialDesignThemes.Wpf.Converters ...@@ -5,13 +5,15 @@ namespace MaterialDesignThemes.Wpf.Converters
{ {
internal class DoubleToThicknessConverter : IValueConverter internal class DoubleToThicknessConverter : IValueConverter
{ {
public double InitialOffset { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
=> (Dock)parameter switch => (Dock)parameter switch
{ {
Dock.Left => new Thickness((double)value, 0, 0, 0), Dock.Left => new Thickness(InitialOffset + (double)value, 0, 0, 0),
Dock.Top => new Thickness(0, (double)value, 0, 0), Dock.Top => new Thickness(0, InitialOffset + (double)value, 0, 0),
Dock.Right => new Thickness(0, 0, (double)value, 0), Dock.Right => new Thickness(0, 0, InitialOffset + (double)value, 0),
Dock.Bottom => new Thickness(0, 0, 0, (double)value), Dock.Bottom => new Thickness(0, 0, 0, InitialOffset + (double)value),
_ => Binding.DoNothing _ => Binding.DoNothing
}; };
......
...@@ -26,6 +26,8 @@ ...@@ -26,6 +26,8 @@
<converters:FloatingHintOffsetCalculationConverter x:Key="FloatingHintOffsetCalculationConverter" /> <converters:FloatingHintOffsetCalculationConverter x:Key="FloatingHintOffsetCalculationConverter" />
<converters:ComboBoxClearButtonMarginConverter x:Key="ComboBoxClearButtonMarginConverter" /> <converters:ComboBoxClearButtonMarginConverter x:Key="ComboBoxClearButtonMarginConverter" />
<converters:DoubleToThicknessConverter x:Key="DoubleToThicknessConverter" /> <converters:DoubleToThicknessConverter x:Key="DoubleToThicknessConverter" />
<!-- The InitialOffset of -8 is to adjust for internal margin/padding between the "selected content (text)" and the combo box chevron arrow -->
<converters:DoubleToThicknessConverter x:Key="DoubleToThicknessConverterWithNegativeOffset" InitialOffset="-8" />
<converters:ThicknessCloneConverter x:Key="HelperTextMarginConverter" CloneEdges="Left" /> <converters:ThicknessCloneConverter x:Key="HelperTextMarginConverter" CloneEdges="Left" />
<converters:ThicknessCloneConverter x:Key="DefaultOrFilledStyleTrailingIconPaddingConverterTop" <converters:ThicknessCloneConverter x:Key="DefaultOrFilledStyleTrailingIconPaddingConverterTop"
AdditionalOffsetTop="2" AdditionalOffsetTop="2"
...@@ -848,6 +850,11 @@ ...@@ -848,6 +850,11 @@
<Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={StaticResource RemoveAlphaBrushConverter}}" /> <Setter TargetName="PART_Popup" Property="Background" Value="{Binding Tag, RelativeSource={RelativeSource Self}, Converter={StaticResource RemoveAlphaBrushConverter}}" />
<Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.ComboBox.Popup.DarkBackground}" /> <Setter TargetName="PART_Popup" Property="Tag" Value="{DynamicResource MaterialDesign.Brush.ComboBox.Popup.DarkBackground}" />
</MultiTrigger> </MultiTrigger>
<!-- PART_ClearButton -->
<DataTrigger Binding="{Binding ElementName=PART_ClearButton, Path=IsVisible}" Value="True">
<Setter TargetName="PART_EditableTextBox" Property="Margin" Value="{Binding ActualWidth, ElementName=PART_ClearButton, Converter={StaticResource DoubleToThicknessConverterWithNegativeOffset}, ConverterParameter={x:Static Dock.Right}}" />
</DataTrigger>
</ControlTemplate.Triggers> </ControlTemplate.Triggers>
</ControlTemplate> </ControlTemplate>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册