如何将telerik转换应用于已在XAML代码中创建的边框

时间:2013-02-22 22:37:48

标签: c# silverlight xaml telerik

我的程序中有以下XAML

 <Border x:Name="topCornerBorder" CornerRadius="10" Height="auto" Width="auto" Background="White">
        <Grid x:Name="topCorner" Grid.Row="0" Grid.Column="0" Background="White" Margin="10,10,10,10">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="190*"/>
            <ColumnDefinition Width="30*"/>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="270*"/>
            <RowDefinition Height="60*"/>
        </Grid.RowDefinitions>

     <StackPanel x:Name="StackPanel" Orientation="Vertical" Grid.Row="0" Grid.Column="1" >
        <Canvas x:Name="textBlockCanvas1">
        </Canvas>
     </StackPanel>

        <Canvas Grid.Row="1" Grid.Column="0" >
            <sdk:DataGrid x:Name="dataGrid" Grid.Row="1" Grid.Column="0" Height="50" Width="300" Canvas.Top="15" Canvas.Left="100" Visibility="Collapsed" AutoGenerateColumns="False" ColumnWidth="*" RowBackground="Aqua" 
                        VerticalContentAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center" CanUserResizeColumns="false" CanUserSortColumns="False" IsReadOnly="True"  BorderThickness="3"
                         CanUserReorderColumns="False" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

                <sdk:DataGrid.Columns>

                    <!--Column stuff here not important for this question..-->

                </sdk:DataGrid.Columns>
            </sdk:DataGrid>
        </Canvas>    
    </Grid>  

我尝试通过执行以下操作来设置转换:

  <telerik:RadTransitionControl Name="radTransitionControl" Duration="00:00:01" Content="{Binding topCornerBorder}" >
        <telerik:RadTransitionControl.Transition >
            <telerik:SlideAndZoomTransition/>
        </telerik:RadTransitionControl.Transition>
    </telerik:RadTransitionControl>   

但没有任何事情发生。我还在后面的C#代码中尝试了以下内容:

radTransitionControl.Content = this.topCornerBorder;

但是这会导致错误“值不在预期范围内”。

如何将转换内容属性成功设置为围绕其余UI元素的边框,我该怎么做?

2 个答案:

答案 0 :(得分:1)

您似乎错误地使用了Transition Control。

控件只是一个内容控件,可在内容更改时触发动画。

通常,您可以将视觉分解为单个用户控件,并在适当的时间设置过渡控制的内容。


在最简单的示例中,您可能有两个UserControl(View1.xaml和View2.xaml)。从您设置的代码

radTransitionControl.Content = new View1(); 

然后你要设置

radTransitionControl.Content = new View2();

在第二组操作中,您可能会看到转换发生。


请注意,如果在加载Transition Control之前调用setter,则不会发生任何转换。

另请注意,此Content="{Binding topCornerBorder}不起作用,因为topCornerBorder是一个元素,而不是属性。

Content="{Binding ElementName=topCornerBorder}

在语法上是否正确但可能会导致exception,因为topCornerBorder已经是可视树的一部分。

答案 1 :(得分:0)

我能够通过简单地执行以下操作将过渡应用到边界(以及其中的所有其他内容):

radTransitionControl.PrepareAnimation();

我不知道这是否是正确的方法,但它到目前为止还在运作。