Skip to content

Commit df00283

Browse files
[SmartHint] Fix hint placement when ComboBox toggles between single-line and multi-line selection (#3690)
* Add SmartHint.HintHost * Use SmartHint.HintHost to trigger hint position recalculation * Set SmartHint.HintHost in ComboBox style * Set SmartHint.HintHost in TextBox and AutoSuggestBox styles
1 parent 9ec7e2a commit df00283

File tree

5 files changed

+14
-0
lines changed

5 files changed

+14
-0
lines changed

src/MaterialDesignThemes.Wpf/SmartHint.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,15 @@ public FrameworkElement? FloatingTarget
154154
set => SetValue(FloatingTargetProperty, value);
155155
}
156156

157+
public static readonly DependencyProperty HintHostProperty = DependencyProperty.Register(
158+
nameof(HintHost), typeof(FrameworkElement), typeof(SmartHint), new PropertyMetadata(default(FrameworkElement)));
159+
160+
public FrameworkElement HintHost
161+
{
162+
get => (FrameworkElement) GetValue(HintHostProperty);
163+
set => SetValue(HintHostProperty, value);
164+
}
165+
157166
public static readonly DependencyProperty FloatingAlignmentProperty = DependencyProperty.Register(
158167
nameof(FloatingAlignment), typeof(VerticalAlignment), typeof(SmartHint), new PropertyMetadata(System.Windows.VerticalAlignment.Bottom));
159168

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.AutoSuggestBox.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@
169169
HintProxy="{Binding RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static converters:HintProxyFabricConverter.Instance}}"
170170
UseFloating="{TemplateBinding wpf:HintAssist.IsFloating}"
171171
FloatingTarget="{Binding ElementName=PART_ContentHost}"
172+
HintHost="{Binding RelativeSource={RelativeSource TemplatedParent}}"
172173
wpf:HintAssist.Background="{TemplateBinding wpf:HintAssist.Background}">
173174
<wpf:SmartHint.InitialHorizontalOffset>
174175
<MultiBinding Converter="{StaticResource FloatingHintInitialHorizontalOffsetConverter}">

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ComboBox.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,7 @@
409409
HintProxy="{Binding RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static converters:HintProxyFabricConverter.Instance}}"
410410
UseFloating="{TemplateBinding wpf:HintAssist.IsFloating}"
411411
FloatingTarget="{Binding ElementName=PART_EditableTextBox}"
412+
HintHost="{Binding RelativeSource={RelativeSource TemplatedParent}}"
412413
wpf:HintAssist.Background="{TemplateBinding wpf:HintAssist.Background}"
413414
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
414415
UseLayoutRounding="{TemplateBinding UseLayoutRounding}">

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.SmartHint.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,8 @@
163163
<Binding Path="InitialHorizontalOffset" RelativeSource="{RelativeSource TemplatedParent}" />
164164
<Binding Path="FloatingTarget.ActualHeight" RelativeSource="{RelativeSource TemplatedParent}" FallbackValue="{x:Static DependencyProperty.UnsetValue}" />
165165
<Binding Path="FontSize" RelativeSource="{RelativeSource TemplatedParent}" />
166+
<Binding Path="HintHost.ActualWidth" RelativeSource="{RelativeSource TemplatedParent}" />
167+
<Binding Path="HintHost.ActualHeight" RelativeSource="{RelativeSource TemplatedParent}" />
166168
</MultiBinding>
167169
</Grid.RenderTransform>
168170
<Canvas Width="{Binding ElementName=FloatingHintTextBlock, Path=ActualWidth}"

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TextBox.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@
210210
HintProxy="{Binding RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static converters:HintProxyFabricConverter.Instance}}"
211211
UseFloating="{TemplateBinding wpf:HintAssist.IsFloating}"
212212
FloatingTarget="{Binding ElementName=PART_ContentHost}"
213+
HintHost="{Binding RelativeSource={RelativeSource TemplatedParent}}"
213214
wpf:HintAssist.Background="{TemplateBinding wpf:HintAssist.Background}">
214215
<wpf:SmartHint.InitialHorizontalOffset>
215216
<MultiBinding Converter="{StaticResource FloatingHintInitialHorizontalOffsetConverter}">

0 commit comments

Comments
 (0)