我已经处理过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);
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人能解释我在这里做错了什么,我将非常感激,因为我不明白为什么翻译似乎没有像我期望的那样起作用.
提前致谢,
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));
}
Run Code Online (Sandbox Code Playgroud)
该Window.xaml包含一个按钮和一个复选框。当复选框被选中时,当它被取消选中时,我将 ViewModel 的“Selected”属性设置为 true 和 false。这是 xaml 和代码隐藏的代码。
<Window x:Class="DataTriggers.Window1" …Run Code Online (Sandbox Code Playgroud)