2010-01-28 107 views
7

我试图创建一个反射效果,它的工作效果很好,除了我必须对一些值进行硬编码。这是我的XAML:XAML,将Width和Height属性绑定到其他控件的相同属性

<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}"但它似乎并没有工作。

Wha对此代码有错误?

更新:如果我设置宽度和高度的位置:

<UserControl x:Name="CurrentPresenter" Height="200" Width="500" /> 

它按预期工作。但是,如果我在UserControl XAML中设置这些值,则不起作用。有任何想法吗?

+0

当你说它不起作用时,你实际上看到了什么样的行为?边界是否显得太小,还是只能无限延伸(我见过两种)。 – TabbyCool 2010-01-28 09:14:40

+0

它延伸填充conatiner。 – JAG 2010-01-28 10:06:29

+0

如果您在UserControl XAML中设置高度和宽度,UserControl是否显示为正确的大小,并且它只是伸展的边框,或者都控制了错误的大小? – TabbyCool 2010-01-28 11:04:02

回答

16

不是绑定的高度和用户控件的Width属性,你试图结合BorderHeightWidth属性的用户控件的ActualHeightActualWidth属性?

<Border 
Width="{Binding ElementName=CurrentPresenter, Path=ActualWidth}" 
Height="{Binding ElementName=CurrentPresenter, Path=ActualHeight}" > 
+0

同样的行为。请看看我的更新。 – JAG 2010-01-28 10:16:27

+1

此修复程序保存了一些灰色头发。谢谢虎斑。 – 2010-12-18 21:18:03

相关问题