2010-01-28 6 views
7

Sto provando a creare un effetto di riflessione e funziona benissimo tranne che devo codificare alcuni valori. Questo è il mio XAML:XAML, proprietà di larghezza e altezza vincolanti con le stesse proprietà dell'altro controllo

<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> 

Ho provato a sostituire di Border Width="500" e Height="200" da Width="{Binding ElementName=CurrentPresenter, Path=Width}" e Height="{Binding ElementName=CurrentPresenter, Path=Height}", ma non sembra funzionare.

Wha's sbagliato con questo codice?

UPDATE: Se ho impostato Larghezza e Altezza qui:

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

Esso funziona come previsto. Tuttavia non funziona se imposto questi valori in UserControl XAML. Qualche idea?

+0

Quando dici che non funziona, che tipo di comportamento stai effettivamente vedendo? Il Border appare troppo piccolo, o continua semplicemente ad allungarsi all'infinito (ho visto entrambi). – TabbyCool

+0

Si allunga per riempire il coniner. – JAG

+0

Se si imposta l'altezza e la larghezza in UserControl XAML, l'UserControl sembra avere le giuste dimensioni ed è solo il bordo che si sta allungando, oppure entrambi i controlli hanno le dimensioni sbagliate? – TabbyCool

risposta

16

Piuttosto che si legano al Width del UserControl altezza e, avete provato vincolanti le Height e Width proprietà del Border alle ActualHeight e ActualWidth proprietà del UserControl?

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

Stesso comportamento. Si prega di dare un'occhiata al mio aggiornamento. – JAG

+1

Questa correzione ha salvato alcuni grigi capelli. Grazie Tabby. –