草庐IT

creating-wpf-project-from-scratch

全部标签

c# - WPF 最佳实践 : Do custom controls work well with the MVVM design?

我正在考虑创建一个可以在我的页面上重复使用的通用控件:一个具有Address1、Address2、City、State、Zip等的AddressControl...最初我只是创建了一个包含所有这些项目的类(AddressEntity)并实现了INotifyPropertyChanged。我将该类作为DependencyProperty包含在我的AddressControl的代码隐藏中,并将其用作绑定(bind)到其属性的DataContext。然后,有人说我的代码很丑,我应该看看MVVM。看着它,我假设:AddressEntity.cs将只是数据(即Address1、Address2等

c# - ScintillaNET vs AvalonEdit 为 WPF 应用程序提供脚本接口(interface)

我正在从事一个项目,其中包括为我的WPF(.Net4)windows应用程序实现脚本接口(interface)。我很好奇是否有人可以推荐一个首选编辑器,AvalonEdit对比ScintillaNET.任何陷阱和一个相对于另一个的优势。我们需要同时支持C#和IronPython作为脚本语言。(至少这是最初的计划。不过我们可能会最终确定其中一个)。ScintillaNET的缺点之一是它只是原生(非托管)Scintilla的托管包装器。当与WPF4一起使用时,这会导致任何问题吗?欢迎任何指点和建议。 最佳答案 我认为这取决于您要在编辑器

c# - 在 WPF 中获取用户输入的简单、快速的方法?

我最近开始在我的一个项目中使用C#和WPF。有没有一种快速获取用户输入的方法?我一直无法为WPF项目找到一个。我不想创建另一个窗口、添加“确定”和“取消”按钮以及为所有内容添加事件处理程序。我可以做到,但我想知道一种更简单的方法。据我所知,这在win形式中是可能的。只需一行代码即可获得用户输入。我也可以在WPF中完成吗? 最佳答案 如果将Microsoft.VisualBasicdll添加到应用程序,则可以使用InputBox方法从用户那里获取单个值。Microsoft.VisualBasic.Interaction.InputBo

c# - WPF 缩放文本以仅在太大时适合

我正在尝试在WPF中设置一个项目列表,其中包含随机长度的字符串(人名)。它们中的大多数通常都在一定的大小之内,但偶尔您会遇到一个太长的字符串,以至于它超出了容器的范围。我通常会在它太长时将其截断,但我更愿意显示整个字符串。我如何强制文本保持其正常大小,除非太大而不适合...在这种情况下将其缩小以适合?注意:这与缩放所有文本以适应特定大小不同,后者是使用文本周围的View框实现的IE:这不是我想要的:这使得一切都在太小的时候放大,以及在太大的时候缩小。我只希望它在太大时缩小,而在太小时从不放大...有什么想法吗? 最佳答案 使用Vie

c# - 如何在 wpf 中的文本绑定(bind)前面添加项目符号?

为简单起见,我有以下缩写如何才能让我的TextBox在绑定(bind)到它的文本前面显示一个项目符号点?所需格式:列出第1项列出第2项 最佳答案 您可以使用BulletDecorator与文本block。示例: 关于c#-如何在wpf中的文本绑定(bind)前面添加项目符号?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/26258450/

c# - SMTP 异常 : Unable to read data from the transport connection: net_io_connectionclosed

我知道这个问题看起来像是许多其他问题的重复,但事实并非如此。每当我尝试通过我的Web应用程序在我的本地计算机上发送电子邮件时,都会抛出SMTPException,异常是://onthisline:SmtpServer.Send(mail);Unabletoreaddatafromthetransportconnection:net_io_connectionclosed.虽然生产代码运行良好,相同的代码、相同的连接、相同的凭据,我使用的是IP而不是别名,我试图关闭本地机器上的防火墙,但没有任何帮助解决这个问题。虽然以前在我的本地机器上工作过,但任何人都可以提示引发此问题的可能是什么问题

c# - Entity Framework : The context is being used in Code First mode with code that was generated from an EDMX file

我正在使用EF6数据库优先方法开发一个WPF应用程序,我的解决方案中有一个项目,如果我运行我的项目,这个错误总是出现。上下文在代码优先模式下使用,代码是从数据库优先或模型优先开发的EDMX文件生成的。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用数据库优先或模型优先,请确保EntityFramework连接字符串包含在启动项目的app.config或web.config中。如果您要创建自己的DbConnection,请确保它是一个EntityConnection而不是其他类型的DbConnection,并且您将它传递给采用DbConnection的基本Db

c# - 在 WPF 中测量运行时创建的控件

我知道这是一个很受欢迎的问题,但我找不到任何能准确回答它的问题,但如果我在搜索中遗漏了什么,我深表歉意。我正在尝试使用以下代码在运行时创建并测量控件(测量结果将用于选取框式滚动控件-每个控件的大小不同):Labellb=newLabel();lb.DataContext=task;Stylestyle=(Style)FindResource("taskStyle");lb.Style=style;cnvMain.Children.Insert(0,lb);width=lb.RenderSize.Width;width=lb.ActualWidth;width=lb.Width;该代码创

c# - 获取 WPF 窗口的最小化框单击

如何获取WPF窗口的最小化框点击事件? 最佳答案 有一个名为StateChanged的事件(根据帮助)看起来它可能会执行您想要的操作。Occurswhenthewindow'sWindowStatepropertychanges.帮助说它只在Vista下的.NET3.0和3.5中受支持,但我刚刚在XP上试过它,当窗口最小化、最大化和恢复时它会触发。但是,根据我的测试,它会在状态更改之后触发,因此如果您想在窗口最小化之前执行某些操作,这可能不是您需要的方法。您必须检查实际状态以确保它是正确的。privatevoidWindow_Sta

c# - 以编程方式为 WPF 单元测试生成按键

我正在尝试对WPF控件进行单元测试,并且需要模拟按键按下。我看到了一个可能的解决方案here,但是当我尝试传入PresentationSource时,我不断得到一个空值(来自PresentationSource.FromVisual()或PresentationSource.FromDependencyObject()),这会触发异常。我的问题是如何获得可在单元测试中使用的非空PresentationSource? 最佳答案 您可以像这样扩展PresentationSource类:publicclassFakePresentatio