Skip to content

Commit 6524fe0

Browse files
Use ElementName binding with converter (#3692)
Returning to the ElementName binding avoids the exception, but introduces a temporary binding error. Adding the converter effectively avoids the binding error.
1 parent df00283 commit 6524fe0

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

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

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
22
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3-
xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf">
3+
xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf"
4+
xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters">
45
<ResourceDictionary.MergedDictionaries>
56
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Font.xaml" />
67
</ResourceDictionary.MergedDictionaries>
@@ -13,6 +14,9 @@
1314
</Style>
1415

1516
<Style TargetType="{x:Type wpf:DialogHost}">
17+
<Style.Resources>
18+
<converters:FirstNonNullConverter x:Key="FirstNonNullConverter" />
19+
</Style.Resources>
1620
<Setter Property="DialogMargin" Value="35" />
1721
<Setter Property="DialogTheme" Value="Inherit" />
1822
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
@@ -205,7 +209,14 @@
205209
IsHitTestVisible="False"
206210
Visibility="{Binding ElementName=ContentCoverBorder, Path=Visibility}">
207211
<Grid.OpacityMask>
208-
<VisualBrush Visual="{x:Reference ContentCoverBorder}" />
212+
<VisualBrush>
213+
<VisualBrush.Visual>
214+
<MultiBinding Converter="{StaticResource FirstNonNullConverter}">
215+
<Binding ElementName="ContentCoverBorder" />
216+
<Binding Source="{x:Static DependencyProperty.UnsetValue}" />
217+
</MultiBinding>
218+
</VisualBrush.Visual>
219+
</VisualBrush>
209220
</Grid.OpacityMask>
210221
<Border x:Name="ContentCoverBorder"
211222
Background="{Binding OverlayBackground, RelativeSource={RelativeSource TemplatedParent}}"
@@ -236,6 +247,9 @@
236247
</Style>
237248

238249
<Style x:Key="MaterialDesignEmbeddedDialogHost" TargetType="{x:Type wpf:DialogHost}">
250+
<Style.Resources>
251+
<converters:FirstNonNullConverter x:Key="FirstNonNullConverter" />
252+
</Style.Resources>
239253
<Setter Property="DialogMargin" Value="35" />
240254
<Setter Property="HorizontalContentAlignment" Value="Center" />
241255
<Setter Property="Placement" Value="Center" />
@@ -380,7 +394,14 @@
380394
IsHitTestVisible="False"
381395
Visibility="{Binding ElementName=ContentCoverBorder, Path=Visibility}">
382396
<Grid.OpacityMask>
383-
<VisualBrush Visual="{x:Reference ContentCoverBorder}" />
397+
<VisualBrush>
398+
<VisualBrush.Visual>
399+
<MultiBinding Converter="{StaticResource FirstNonNullConverter}">
400+
<Binding ElementName="ContentCoverBorder" />
401+
<Binding Source="{x:Static DependencyProperty.UnsetValue}" />
402+
</MultiBinding>
403+
</VisualBrush.Visual>
404+
</VisualBrush>
384405
</Grid.OpacityMask>
385406
<Border x:Name="ContentCoverBorder"
386407
Background="{Binding OverlayBackground, RelativeSource={RelativeSource TemplatedParent}}"

0 commit comments

Comments
 (0)