0

我的程序中有以下 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 元素的边框?

4

2 回答 2

1

您似乎错误地使用了过渡控制。

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

通常,您会将视觉效果分解为单独的用户控件,并在适当的时间设置过渡控件的内容。


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

radTransitionControl.Content = new View1(); 

然后你会设置

radTransitionControl.Content = new View2();

在第二个集合操作中,您会期望看到转换发生。


请注意,如果在加载转换控件之前调用设置器,则不会发生任何转换。

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

Content="{Binding ElementName=topCornerBorder}

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

于 2013-02-23T09:25:24.340 回答
0

好吧,我只需执行以下操作即可将过渡应用到边框(以及其中的所有其他内容):

radTransitionControl.PrepareAnimation();

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

于 2013-02-22T23:13:10.823 回答