我已经处理过LayoutTransform和RenderTransform,我知道每个都适合我在以前的项目中找到的特定场景.
但是,从性能角度和使用WPF分析工具时,对于一个实例,哪一个对UI性能的影响较小?
我有一个简单的应用程序,包含一个包含Canvas(rootCanvas)的窗口.我试图添加另一个Canvas(测试)并将不同的变换应用于子画布的LayoutTransform.这都是以编程方式完成的,而不是使用XAML.
有些转型正在发挥作用,而其他转型则不如下:
代码如下:
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Canvas rootCanvas = (Canvas)Application.Current.Windows[0].FindName("canvas1");
        Canvas test = new Canvas();
        test.Width = 10;
        test.Height = 10;
        test.Background = Brushes.Aqua;
        // this works 
        //test.LayoutTransform = new RotateTransform(45);
        // this doesn't
        //test.LayoutTransform = new TranslateTransform(40, 40);
        // only the rotate part of this works
        Matrix matrix = new Matrix();
        matrix.Rotate(45);
        matrix.Translate(40, 40);
        test.LayoutTransform = new MatrixTransform(matrix);
        rootCanvas.Children.Add(test);
    }
}
如果有人能解释我在这里做错了什么,我将非常感激,因为我不明白为什么翻译似乎没有像我期望的那样起作用.
提前致谢,
Wibbs
我正在尝试根据我班级上布尔值的绑定来为 a的ScaleY属性设置动画。当值第一次被(应用程序首次启动时)视为 false时,当我第一次在复选框的选中事件中将其更改为 true时,动画发生,但当我在同一个复选框的未选中事件中将其设置为 false 时,不会发生动画。LayoutTransformDataTriggerViewModelDataTrigger
下面列出了我正在做的事情的简化版本。
ViewModel 类非常简单,包含一个DependencyProperty名为 Selected 的布尔值。
    public class VM : DependencyObject
{
    public bool Selected
    {
        get { return (bool)GetValue(SelectedProperty); }
        set { SetValue(SelectedProperty, value); }
    }
    // Using a DependencyProperty as the backing store for Selected.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty SelectedProperty =
        DependencyProperty.Register("Selected", typeof(bool), typeof(VM), new UIPropertyMetadata(false));
}
该Window.xaml包含一个按钮和一个复选框。当复选框被选中时,当它被取消选中时,我将 ViewModel 的“Selected”属性设置为 true 和 false。这是 xaml 和代码隐藏的代码。
<Window x:Class="DataTriggers.Window1" …