Tag: wpf

在过滤CollectionViewSource期间保留SelectedItem

我有一个像这样过滤的列表框: var view = CollectionViewSource.GetDefaultView(FilterSource); view.Filter = FilterCode; 我遇到了一个问题,当filter与viewmodel代码一起使用时, SelectedItem会丢失,如下所示: VM { public ObservableCollection Items{get;set;} public Model SelectedItem { get{return _selectedItem;} set{_selectedItem = value; NotifyPropertyChanged();} } } 应用filter时, SelectedItem设置为null 。 但是,除非用户实际点击它,否则我希望保留所选项目。 如果删除filter,则仍应选择所选项目。 Model确实有一个IsSelected属性,我一直试图想办法查询IsSelected属性。 但是,视图的绑定不会像我期望的那样工作….或者至少我认为它不能

UI在重度计算时冻结

我正在将大量文件加载到内存中,但在此计算中,我的应用程序已冻结。 知道我的代码有什么问题吗? public void Drop(DragEventArgs args) { BackgroundWorker worker = new BackgroundWorker(); string fileName = IsSingleTextFile(args); if (fileName == null) return; worker.DoWork += (o, ea) => { try { StreamReader fileToLoad = new StreamReader(fileName); string filecontent = fileToLoad.ReadToEnd(); fileToLoad.Close(); // providing the information to the UI thread Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => SfmLogFile = filecontent)); } […]

如何确保Task.Delay更准确?

我有一个WPF应用程序,它广泛使用await和async方法。 有几个地方我叫await Task.Delay(…); 插入暂停。 但是我遇到的麻烦是虽然很多这些停顿都可以稍微偏离,但有些地方我绝对需要暂停才能准确。 换句话说,如果我调用await Task.Delay(2000); 在我的应用程序中有一些地方我需要保证它只会暂停2秒(而不是2.2秒)。 我相信问题来自于我确实有很多不同的异步方法,所以当我告诉其中一个延迟时,线程池中没有足够的线程,当它应该恢复活着时,结果,无意中,延迟比预期的更长。 当您的业务需要尽可能准确地延迟时,线程的C#“最佳实践”是什么? 很明显,异步方法似乎并不足够(即使它们很好阅读)。 我应该手动创建具有更高优先级的线程并使用Thread.Sleep吗? 我是否增加了线程池中的线程数? 我使用BackgroundWorker吗?

如何在WPF中创建一组广播菜单项?

WPF似乎缺少RadioMenuItem类或类似function。 在Windows.Forms ,菜单项具有RadioChecked属性,但WPF菜单项仅具有IsChecked 。 我可以将实际的RadioButton放在MenuItem ,但这感觉很奇怪,看起来很尴尬。 如何在WPF菜单中创建一组function类似单选按钮的菜单项? 有关参考,请参阅IE8中的“缩放”菜单。

WPF / C# – 以编程方式创建和使用单选按钮的示例

有人能指出如何在C#WPF中以编程方式创建和使用单选按钮的示例吗? 所以基本上如何(a)以编程方式创建它们,以及(b)如何在值改变时捕获触发器,(c)如何在给定时间获取结果。 如果答案也将基于使用Binding方法,也会有兴趣看到。 如果数据绑定是最简单的方法,那么这个例子就会很棒。 否则,如果不需要数据绑定,那么最好/最简单的方法就是基于非数据绑定的示例。 笔记: 请注意,我当前拥有的父节点是StackPanel,因此问题的一个方面是如何将多个RadioButtons添加到StackPanelI猜测。 应该指出我不知道在编译时会有多少个单选按钮,也不知道在运行时会发现什么文本。 它是一个WPF应用程序(即桌面,而不是Web应用程序)

如何创建逆png图像?

我正在创建在我的基础上绘制的png图像,从基础我可以保存一个png图像,供您参考 Graphics g = e.Graphics; …. g.DrawLine(pen, new Point(x, y), new Point(x1, y1)); ….. base.OnPaint(e); using (var bmp = new Bitmap(500, 50)) { base.DrawToBitmap(bmp, new Rectangle(0, 0, 500, 50)); bmp.Save(outPath); } 这是单色透明图像,现在我如何反转这个图像像png填充任何颜色和真实图像部分应该是透明的,有可能吗? 位细节:透明会变得不透明,填充的地方会变得透明

在包装面板中设置最大行数

我需要配置一个包装面板,我可以在其中设置最大行数或最大列数。 这是非常必要的,我正在使用WPF 4.0。 但是另一天,我是programmin Metro应用程序,我记得它的一个控件有这个属性,但在WPF中没有(直到我知道)。 在WPF 4.0中是否存在这样的控件? 或者我需要创建一个新的?

在WCF中添加具有netsh的端口作为没有管理员权限的域管理员

我在WPF应用程序(自托管)中有一个WCF服务,我有一个典型的错误“你的进程没有对这个命名空间的访问权限”。 用户不能拥有管理员权限,因此使用.manifest不是解决方案。 端口是动态的,应用程序每次运行时都会计算一个空闲端口,因此应用程序必须通过netsh多次插入监听端口我使用带有域管理员的ProcessStartInfo,但要启动该过程,用户需要管理员权限。 以管理员身份运行应用程序既不是解决方案,所以我需要普通用户可以运行应用程序,程序通过netsh作为域管理员添加端口。 我的过程是这样的: ProcessStartInfo psi = new ProcessStartInfo(“netsh”, parameter); SecureString ss = new SecureString(); for (int i = 0; i < adminPass.Length; i++) ss.AppendChar(adminPass[i]); psi.Password = ss; psi.UserName = Admin; psi.Domain = Domain; psi.Verb = "runas"; psi.RedirectStandardOutput = false; psi.CreateNoWindow = true; psi.WindowStyle = ProcessWindowStyle.Hidden; psi.UseShellExecute = false; Process.Start(psi); 非常感谢

No Parameters传递给自定义DataTemplateSelector的SelectTemplate()。 为什么?

我正在使用CellTemplateSelector有条件地在DataGrid列中显示复选标记。 调用我的DataTemplateSelector类的方法SelectTemplate(object item, DependencyObject container) ,但参数项为null而不是预期的DataRowView -object。 这是XAML代码。 DataGrid的Property ItemsSource的项目是一个DataTable ,适用于其他列。 ( 我使用Visual Studio Express 2010 ) … … … 任何帮助表示赞赏。 提前致谢。

如何在不阻止UI线程的情况下继续执行多个任务?

在我的MVVM应用程序中,我的视图模型调用3种不同的服务方法,将每种数据转换为通用格式,然后使用属性通知/可观察集合等更新UI。 服务层中的每个方法都会启动一个新Task ,并将Task返回给视图模型。 这是我的一种服务方法的示例。 public class ResourceService { internal static Task LoadResources(Action<IEnumerable> completedCallback, Action errorCallback) { var t = Task.Factory.StartNew(() => { //… get resources from somewhere return resources; }); t.ContinueWith(task => { if (task.IsFaulted) { errorCallback(task.Exception); return; } completedCallback(task.Result); }, TaskScheduler.FromCurrentSynchronizationContext()); return t; } } 这是调用代码和视图模型的其他相关部分…… private ObservableCollection Data = new ObservableCollection(); public ICollectionView […]