2010-01-28 3 views
7

Я пытаюсь создать эффект отражения, и он отлично работает, за исключением того, что мне нужно жестко закодировать некоторые значения. Это моя XAML: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-х Width="500" и Height="200" по Width="{Binding ElementName=CurrentPresenter, Path=Width}" и Height="{Binding ElementName=CurrentPresenter, Path=Height}", но это не похоже на работу.

Что с этим кодом?

UPDATE: Если установить ширину и высоту здесь:

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

Он работает, как ожидалось. Однако это не сработает, если я установил эти значения в UserControl XAML. Есть идеи?

+0

Когда вы говорите, что это не работает, какое поведение вы на самом деле видите? Граница кажется слишком маленькой, или она просто продолжает растягиваться бесконечно (я видел оба). – TabbyCool

+0

Он растягивается, чтобы заполнить conatiner. – JAG

+0

Если вы задаете высоту и ширину в UserControl XAML, выглядит ли UserControl как правильного размера, а просто растягивается граница или они управляют неправильным размером? – TabbyCool

ответ

16

Вместо того, чтобы связываться с высоты и ширины свойства UserControl, вы пробовали связывания Height и Width свойства Border к ActualHeight и ActualWidth свойства UserControl?

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

Такое же поведение. Пожалуйста, взгляните на мое обновление. – JAG

+1

Это исправление спасло несколько седых волос. Спасибо, Табби. –