我正在尝试创建一个反射效果,除了我必须对某些值进行硬编码之外,它的工作效果很好。这是我的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>
我已尝试将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中设置这些值,它将不起作用。有什么想法吗?
答案 0 :(得分:16)
您是否尝试将Height
的{{1}}和Width
属性绑定到Border
和{{},而不是绑定到UserControl的高度和宽度属性1}} UserControl的属性?
ActualHeight
答案 1 :(得分:0)
更改ViewportWidth的路径!它为我工作