Я пытаюсь создать эффект отражения, и он отлично работает, за исключением того, что мне нужно жестко закодировать некоторые значения. Это мой XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition />
<RowDefinition Height="80"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="1" VerticalAlignment="Center">
<UserControl x:Name="CurrentPresenter" />
<Border Width="500" Height="200" >
<Border.Background>
<VisualBrush Visual="{Binding ElementName=CurrentPresenter}" >
<VisualBrush.Transform>
<TransformGroup>
<ScaleTransform ScaleX="1" ScaleY="-1" CenterX="500" CenterY="99" />
</TransformGroup>
</VisualBrush.Transform>
</VisualBrush>
</Border.Background>
<Border.OpacityMask>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,0.6">
<GradientStop Offset="-0.6" Color="Black"></GradientStop>
<GradientStop Offset="0.6" Color="Transparent"></GradientStop>
</LinearGradientBrush>
</Border.OpacityMask>
</Border>
</StackPanel>
</Grid>
Я пытался заменить Border's Width="500"
и Height="200"
на Width="{Binding ElementName=CurrentPresenter, Path=Width}"
и Height="{Binding ElementName=CurrentPresenter, Path=Height}"
, но это не сработало.
Что не так с этим кодом?
ОБНОВЛЕНИЕ: если я установлю ширину и высоту здесь:
<UserControl x:Name="CurrentPresenter" Height="200" Width="500" />
Работает как положено. Однако это не сработает, если я установлю эти значения в UserControl XAML. Есть идеи?