草庐IT

creating-wpf-project-from-scratch

全部标签

c# - WPF如何优化布局/渲染周期?

WPF如何在高度易变的应用程序中优化布局/呈现周期?例如,假设我连续两次使自定义控件无效,它会呈现两次吗?当数据/属性更新速率快于主渲染速率时是否存在性能问题? 最佳答案 根据我的经验,我可以说不,如果速度足够快,它不会渲染两次。我不是100%确定,但这就是我认为的原因:我们有一个非常繁重的应用程序(数千个控件),它是一个飞机驾驶舱,全部在wpf中,每个按钮、开关、屏幕都可以通过手势或鼠标移动。驾驶舱是10,000x10,000像素,实现了放大/缩小(使用鼠标滚轮),单击鼠标右键时平移。在优化之前,它非常卡顿、缓慢,所以每个“缩放”

c# - Console.Write() 将在 WPF 中挂起,但在控制台应用程序中有效

请阅读ScottChamberlain的回答,了解为什么它与WINAPI相关。在VisualStudio中创建一个新的WPF应用程序并更改MainWindow.xaml.cs中的代码,如下所示。运行应用程序。代码将在第二次调用Console.Write()时挂起。MainWindow.xaml.csusingSystem;usingSystem.Text;usingSystem.Windows;namespaceTestWpf{//////InteractionlogicforMainWindow.xaml///publicpartialclassMainWindow:Window{p

c# - 使用 WPF 将应用程序最小化/关闭到系统托盘

我想在用户最小化或关闭表单时在系统托盘中添加应用程序。我已经为Minimize案例完成了它。谁能告诉我如何在关闭表单时保持我的应用程序运行并将其添加到系统托盘中?publicMainWindow(){InitializeComponent();System.Windows.Forms.NotifyIconni=newSystem.Windows.Forms.NotifyIcon();ni.Icon=newSystem.Drawing.Icon(Helper.GetImagePath("appIcon.ico"));ni.Visible=true;ni.DoubleClick+=dele

c# - 如何在不关闭的情况下将 "Hide()"模式 WPF 窗口?

我有一个在后台线程上运行的WPF窗口,作为一种“通知程序窗口”...当引发事件时,它会显示一条消息...用户单击“贪睡”按钮,我调用this.Visibility=Visibility.Collapsed我隐藏窗口的那一刻(通过调用this.Hide()或如上所述设置Visibility)...“ShowDialog()"代码释放并关闭窗口。这绝对是WPF代码中的错误(我已通过反射器识别)...但我的问题仍然存在。有没有人能够想出解决此问题的方法?我已经尝试了很多东西,现在正在向你们这些聪明的人伸出援手:) 最佳答案 您无法隐藏模态

c# - 在 Debug 中使用 Project Reference,在 Release 中使用 Nuget

我想同时在我的项目(A)和依赖的Nuget包(B)中工作,而不需要在每次更改时都发布nuget包。是否可以在构建调试时从解决方案(A)中引用Nuget项目(B)。在构建Release时使用Source中的Nuget包? 最佳答案 一种方法是手动编辑csproj文件。如果您当前已经引用了NuGet包,那么您将在csproj文件中拥有这样的部分:......\packages\log4net.2.0.8\lib\net45-full\log4net.dllTrue....在这个例子中,使用了log4net。对于您的NuGet包,公钥to

c# - 向自定义 WPF 控件添加属性?

我今天早上才开始使用WPF,所以(希望)这是一个容易解决的问题。我已经开始创建一个具有渐变背景的按钮。我想在控件的属性中声明渐变开始和结束颜色,然后将它们应用到模板中。不过,我在编译代码时遇到了麻烦。我得到的异常是xaml告诉我该属性不可访问,但是当我将可见性修饰符更改为public时,它提示找不到静态属性...到目前为止,这是我的xaml:这是我的自定义控件的代码:publicclassGradientButton:Button{staticDependencyPropertyGradientStartProperty;staticDependencyPropertyGradient

c# - 如何在 WPF 中为组合框启用自由文本

我们如何在WPF中为组合框启用自由文本输入?我尝试使用IsEditable="True",但即使那样也不起作用...我的xaml语法是: 最佳答案 在网上找到这个:Link010203 关于c#-如何在WPF中为组合框启用自由文本,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5743009/

c# - 是否有可能以 mvvm 模式在 wpf datagrid 上获取动态列?

我正在用wpf开发一个产品(使用MVVM模式)。根据用户的自定义(用户将选择列),我必须将一组数据显示到数据网格中。目前,我正在将具有一组属性的ObservableCollection绑定(bind)到数据网格的ItemSource。这将我限制为固定的列大小。注意:列出n个列名供用户选择。如果它在后面的代码中完成,则通过“datagrid.columns.add()”很容易。在这种情况下,任何人都可以帮助我吗。我的xaml:我的命令类:publicstaticclassDataGridExtension{publicstaticObservableCollectionGetColumn

c# - WPF 包 URI 中的逗号

WPFPackURIs使用三个连续的逗号,例如:pack://application:,,,/myFolder/myPic.bmp,,,部分应该意味着什么?它只是一个分隔符吗?逗号之间可以加任何东西吗? 最佳答案 背景一个URIiscomposedof方案、权限和路径1。例如,取此网页的httpURL:https://stackoverflow.com/questions/16256056/commas-in-wpf-pack-urisscheme=https://authority=stackoverflow.compath=/q

c# - WPF 什么时候订阅 PropertyChanged 事件?

我有一个ClassA和一个ObservableCollection属性,它实现了INotifyPropertyChanged接口(interface)在我的窗口代码隐藏中,我声明了一个ClassA变量,并在Main()方法中对其进行了初始化。我希望variable.PropertyChanged会有一个WPF事件连接到它,但显然PropertyChanged事件仍然为空 最佳答案 当您绑定(bind)到您的对象时,WPF将订阅PropertyChanged事件。这是数据绑定(bind)工作的核心方式。它实际上是通过PropertyC