Tag: wpf

WPF:将虚拟文件拖放到Windows资源管理器中

我正在开发一个类似于dropbox的应用程序,我在WPF列表视图中显示远程文件。 我想拖动这些元素并将其放入Windows资源管理器中。 我见过这样的代码: var dataObject = new DataObject(DataFormats.FileDrop, files.ToArray()); dataObject.SetData(DataFormats.StringFormat, dataObject); DoDragDrop(dataObject, DragDropEffects.Copy); 但是你可能认为,那些文件还没有在本地系统上,在复制它们之前我需要连接到服务器,下载并解压缩文件。 就像一个ftp客户端一样。 我不知道怎么做,但我想知道是否有任何“掉落”事件或类似我能处理。 谢谢!

如何在wpf中的分层数据模板中显示树视图项的上下文菜单

如何使用分层数据模板在wpf中显示树视图项的上下文菜单? 如何仅为CountryTemplate显示上下文菜单:

WPF:当TextBox具有焦点时为ListBox设置IsSelected,而不会丢失LostFocus上的选择

我有一个带有ListBoxItems的ListBox ,它带有一个模板,因此它们包含TextBoxes 当TextBox聚焦时,我希望选择ListBoxItem 。 我发现的一个解决方案如下: 这很好用,但是当TextBox失去焦点时,选择也是如此。 有没有办法防止这种情况发生?

通过异步同步避免死锁并防止UI响应

我们有一个由WPF和/或Winforms客户端使用的库。 我们提供了一个类似于的异步方法: Task GetIntAsync() 我们(不幸的是)还提供了一个同步包装器方法: int GetInt(); 它基本上只是调用异步方法并调用.Result来完成它的任务。 我们最近意识到在某些情况下GetIntAsync一些代码需要在主UI线程上运行(它需要使用标记为“单个”线程模型的传统COM组件(即组件必须在主STA线程中运行而不仅仅是任何STA线程) 所以问题是当在主线程上调用GetInt()时,它将会死锁 .Result阻塞主线程, GetIntAsync()的代码使用Dispatcher.Invoke尝试在主线程上运行。 同步方法已被消耗,因此删除它将是一个重大变化。 因此,我们选择在同步GetInt()方法中使用WaitWithPumping来允许调用主线程。 除了从UI代码中使用GetInt()客户端之外,这种方法GetInt() 。 以前,他们预计使用GetInt()会使UI无法响应 – 也就是说,如果他们从按钮的click事件处理程序中调用GetInt() ,他们会期望在处理程序返回之前不会处理任何Windows消息。 现在消息被抽取,他们的UI响应,并且可以再次点击相同的按钮(并且他们可能不会将其处理程序编码为可重入)。 如果有合理的解决方案,我们希望我们的客户不需要在调用GetInt期间针对响应的UI进行GetInt 题: 有没有办法做一个WaitWithPumping ,它将泵出“调用主要”消息,但不会WaitWithPumping其他与UI相关的消息? 如果客户端UI的行为就像当前显示模式对话框一样,虽然是隐藏的(即用户无法访问其他窗口),但这足以满足我们的目的。 但是,从我读到的内容来看,你无法隐藏modal dialog。 您可以想到的其他解决方法将不胜感激。

如何旋转WPF窗口?

是否可以使用xaml将WPF窗口旋转45度?

WPF:通过DataTrigger设置ListView视图

我有一个列表视图和2个资源,用于显示列表的视图:BooksGridView和ImageDetailView。 ViewModel有一个名为ViewMode的字符串属性,它包含我当前想要显示的视图的名称。 (它使用工具栏从另一个控件更改) 我试图通过使用DataTrigger更改所选视图,但我似乎无法更改View属性。 当我直接设置View资源时,会显示正确的视图。 我还添加了背景更改以确保数据触发器已激活,并且后台确实发生了变化。 所以我显然在这里遗漏了一些东西…… … … 谢谢

WPF UI自动化问题

这个线程属于这个 我在问我需要从哪里插入解决方法 我有一个WPF应用程序,在Windows 7的某些客户端上存在性能问题。在Windows XP上,所有工作都很快。 该应用程序有一个MainShell和一些Child-Windows。 MainShell有时在某些机器上挂起,子窗口也是如此。 现在,我是否必须从所有窗口中的上述链接的线程中插入变通方法? 还有其他解决方法吗?

为什么BackgroundWorker总是很忙?

我在WPF应用程序中的后台工作者中发现了一些奇怪的东西。 我现在要完成的是等到BW完成另一个线程。 检查以下代码: if (bw.IsBusy) { bw.CancelAsync(); System.Threading.ThreadStart WaitThread = new System.Threading.ThreadStart(delegate() { while (bw.IsBusy) { System.Threading.Thread.Sleep(100); } bw.RunWorkerAsync(); }); System.Windows.Application.Current.Dispatcher.Invoke( System.Windows.Threading.DispatcherPriority.Normal, WaitThread); // if I remove this line, bw fires RunWorkerAsyncEvent } else { bw.RunWorkerAsync(); } 请注意,我添加了Dispatcher.Invoke以等待bw不忙,但如果我调用它并且从不触发RunWorkerAsyncCompleted事件,则所有时间都很忙。 虽然,如果我删除该行,FIRES事件,这真的很奇怪。 我怎么能等到bw结束?

C# – 在WPF中将子窗口中的变量返回到父窗口

我有一个名为form1的主窗口。 在form1我有一个按钮,当它被按下它将打开form2(form2.ShowDialog())。 在form2中,我有一个名为“Check”的按钮。 当用户点击“Check”时,它应该进行一些validation,如果成功,则创建一个字符串对象并将其返回到form1。 有关如何实现这一点的任何想法? 当用户关闭窗口时,我不想返回任何内容。

在WPF应用程序中导致UI内存泄漏的ICommand绑定

我正在构建一个使用LINQ to SQL连接到SQL Server数据库的WPF应用程序。 应用程序的主窗口包含一个包含一系列详细视图的ListView 。 ListView的ItemSource绑定到作为根视图模型上的属性公开的详细视图模型对象的集合。 每个详细视图模型对象组成多个ICommand属性以及公开详细模型对象的属性,该属性又公开UI中显示的各种数据字段。 使用ANTS内存分析器进行分析表明,泄漏的对象是详细模型对象中包含的对象,以及它们绑定到的一些UI类。 以前刷新的这些对象的实例不是垃圾回收。 ANTS有一个工具,允许用户跟踪引用链,以确定保留不需要的内存的原因。 当我使用它时,我发现所有出现的链都有一个ICommand 。 因此,我删除了有问题的ICommand ,发现内存泄漏消失了。 不幸的是,我需要ICommand来实现一些重要的function。 让我感到困惑的是它首先如何引用细节模型对象 – 它们是详细视图模型对象中的两个完全独立的实例变量。 这是详细视图模型对象的构造函数(对RootViewModel的引用用于连接到ICommands的一些方法中的回调。我原先怀疑这可能导致一个循环的引用链,这可能是导致问题,但删除它似乎没有任何影响。) public CarDataViewModel(CarData carDataItem, RootViewModel parentViewModel) { _parentViewModel = parentViewModel; CarDataModel = carDataItem; CompetingCheckboxStatus = CarDataModel.CurrentCar.Competing; AcknowledgeAlarm = new ParameterlessCommand(AcknowledgeAlarmClicked); Acknowledge = new ParameterlessCommand(AcknowledgeClicked); ShowReport = new ParameterlessCommand(ShowReportClicked); Cancel = new ParameterlessCommand(CancelClicked); } 这里是设置绑定的xaml – AcknowledgeAlarm是ICommand,CarDataModel是详细模型对象: […]