草庐IT

c# - 有什么方法可以阻止 WPF Popup 在离开屏幕时重新定位自身?

有什么方法可以停止WPFPopup当它离开屏幕时重新定位自己?我找到了这个oldquestion,但它没有得到正确的答案。有什么办法吗?如有必要,我愿意将其子类化。谢谢。 最佳答案 正如Andrei所指出的,这种行为在Popup控件的深处,很难克服。如果您愿意做一些工作,可以通过在弹出窗口到达屏幕边缘时调整大小和翻译弹出窗口的内容来完成。出于演示目的,我们将关注屏幕的左边缘。如果我们有这样的XAML:Loremipsumdolorsitamet,consecteturadipisicingelit,seddoeiusmodtempo

c# - 通过将 UI 分解为 'regions' 来提高 WPF 性能 - 这可能吗?

我在WPF客户端应用程序上运行了一个非常简单的性能测试:publicpartialclassMainWindow:Window{privateObservableCollectiondata=newObservableCollection();publicObservableCollectionDataObj{get{returndata;}}privatevoidbutton1_Click(objectsender,RoutedEventArgse){for(intj=0;j{for(inti=0;i{data.Add(1);}));//updatesthecountDispatch

c# - 如何在 MVVM WPF 应用程序中取消窗口关闭

单击“取消”按钮(或右上角的“X”或“Esc”)后如何取消退出特定表单?WPF:View模型:publicclassMyViewModel:Screen{privateCancelCommandcancelCommand;publicCancelCommandCancelCommand{get{returncancelCommand;}}publicMyViewModel(){cancelCommand=newCancelCommand(this);}}publicclassCancelCommand:ICommand{publicCancelCommand(MyViewModelvi

c# - 如何在 WPF 中获取 ArcSegment 的中点

获取路径中ArcSegment的中点并在WPF中对其进行标记的最佳解决方案是什么? 最佳答案 这应该有效://thegivenarc(oranyothersegments)vararc=newArcSegment(point:newPoint(200,100),size:newSize(100,50),rotationAngle:90,isLargeArc:true,sweepDirection:SweepDirection.Counterclockwise,isStroked:true);//composeoneormoreseg

c# - WPF 4.5 中的 INotifyDataErrorInfo 和异步数据验证

是否允许开火ErrorsChanged来自非UI线程的事件?我正在查看以下文章:ValidatingDatainWPF4.5UsingtheINotifyErrorDataErrorInterface.特别是,我对这段代码有疑问:privateasyncvoidValidateUsername(stringusername){conststringpropertyKey="Username";ICollectionvalidationErrors=null;/*Callserviceasynchronously*/boolisValid=awaitTask.Run(()=>{retur

c# - WPF - 移动 GridSplitter 时列无法正确隐藏

我试图在单击按钮时使用GridSplitter隐藏Grid中的列(该按钮将第三列中所有项目的可见性设置为崩溃了)。如果我不移动GridSplitter它会正常工作并且第三列消失,但是如果我移动GridSplitter内容会消失但其他列不会调整大小以填充空的空间。这是我的问题的示例(gif):我该如何解决这个问题?可能尊重MVVM模式。 最佳答案 问题很简单,您设置了GridSplitterResizeBehavior="PreviousAndCurrent",但是之前的网格列宽度是*并且只要您移动拆分器,它的宽度单位就会是更改为绝对

c# - WPF 网格列 def 自动始终从右侧剪裁

我有一个WPF应用程序,它有一个网格,其中2列设置为*和自动。问题是当我减小窗口大小时,第二列中的子项从右侧而不是左侧被剪裁。我希望它们从左侧剪裁,因为我已将水平对齐方式设置为右侧。有没有一种方法可以从左边剪下第二列元素? 最佳答案 取而代之的是:试试这个:我删除了最后一个按钮宽度属性。输出: 关于c#-WPF网格列def自动始终从右侧剪裁,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

C#/WPF : KeyBinding not triggering Command

我已经声明了出于测试目的,我也添加了绑定(bind)到这些命令的按钮我注意到当启用粘贴按钮时,当我按下Ctrl-V时没有任何反应。Ctrl-C似乎有效。为此,选择了一个列表框项目,我不确定它是否有任何区别。任何人都知道为什么是我的PasteImageCommand不触发?顺便说一句,我正在使用.NET4更新更完整的代码片段更新我发现我需要把KeyBindings在主窗口中,但命令在ViewModel中,如何在ShellView中设置键绑定(bind)然后绑定(bind)到ShellViewModel中的命令? 最佳答案 确保您没有绑

c# - WPF - Graphics.CopyFromScreen 返回黑色图像

以下方法取自WinForms应用程序。它只是捕获屏幕,但我需要修改它才能在WPF应用程序中工作。当我使用它时,它返回一个黑色图像。尺寸正确。我没有任何打开的DirectX或视频,即使在我的桌面上也无法运行。publicstaticBitmapCaptureScreen(){//SetupabitmapofthecorrectsizeBitmapCapturedImage=newBitmap((int)SystemParameters.VirtualScreenWidth,(int)SystemParameters.VirtualScreenHeight,System.Drawing.I

c# - 如何更改 Wpf AdornerLayer 子项的 z 顺序?

我有一个图像编辑应用程序,我有自定义装饰器,这些装饰器被添加到AdornerLayer。当用户点击一个装饰器时,我想将它带到顶部-这意味着如果它被拖到另一个装饰器上,我希望第一次点击被最上面的装饰器捕获。我不知道如何更改AdornerLayer的子元素的z顺序。它似乎不允许我对它们进行排序。即使我删除并重新添加装饰器,它也不会达到最顶层。 最佳答案 我遇到了类似的问题,但只需要对我的装饰器进行特定排序。我最终使用反射来设置订单:varsetZOrderMethodInfo=adornerLayer.GetType().GetMeth