WPF中的Application.DoEvents()在哪里?
我有以下示例代码,每次按下按钮时都会缩放:
XAML:
<Window x:Class="WpfApplication12.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Canvas x:Name="myCanvas">
<Canvas.LayoutTransform>
<ScaleTransform x:Name="myScaleTransform" />
</Canvas.LayoutTransform>
<Button Content="Button"
Name="myButton"
Canvas.Left="50"
Canvas.Top="50"
Click="myButton_Click" />
</Canvas>
</Window>
.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void myButton_Click(object sender, RoutedEventArgs e)
{
Console.WriteLine("scale {0}, location: {1}",
myScaleTransform.ScaleX,
myCanvas.PointToScreen(GetMyByttonLocation()));
myScaleTransform.ScaleX =
myScaleTransform.ScaleY =
myScaleTransform.ScaleX + 1;
Console.WriteLine("scale {0}, location: {1}",
myScaleTransform.ScaleX,
myCanvas.PointToScreen(GetMyByttonLocation()));
}
private Point GetMyByttonLocation()
{
return new Point(
Canvas.GetLeft(myButton),
Canvas.GetTop(myButton));
}
}
输出为:
scale 1, location: 296;315scale 2, location: 296;315
scale 2, location: 346;365
scale 3, location: 346;365
scale 3, location: 396;415
scale 4, location: 396;415
如您所见,存在一个问题,我认为可以通过使用来解决,Application.DoEvents();
但是.... NET 4 中不存在 先验 问题。
该怎么办?
回答:
WPF中不推荐使用旧的Application.DoEvents()方法,而是使用分派器或后台工作线程执行您所描述的处理。有关如何使用这两个对象的文章,请参见链接。
如果绝对必须使用Application.DoEvents(),则只需将system.windows.forms.dll导入应用程序并调用该方法。但是,实际上不建议这样做,因为您将失去WPF提供的所有优势。
以上是 WPF中的Application.DoEvents()在哪里? 的全部内容, 来源链接: utcz.com/qa/423776.html