我的程序中有以下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元素的边框,我该怎么做?
答案 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();
我不知道这是否是正确的方法,但它到目前为止还在运作。