草庐IT

WPF-Window

全部标签

c# - 在运行时切换 wpf 资源字典

我正在尝试构建一个允许用户在运行时更改主题的wpf应用程序。到目前为止,我所做的是创建一个资源字典,其中定义了应用程序的所有颜色,然后我在xaml中绑定(bind)到这个字典。下面是我用来切换资源字典的代码:if(System.IO.File.Exists(fileName)){using(FileStreamfs=newFileStream(fileName,FileMode.Open)){ResourceDictionarydic=(ResourceDictionary)XamlReader.Load(fs);Resources.MergedDictionaries.Clear()

c# - 挂接到 WPF 窗口中的 Windows 消息循环会在内部添加白色边框

我正在尝试创建一个带有WindowStyle="None"的WPF窗口(用于自定义按钮,没有标题),无法调整大小。将ResizeMode设置为NoResize会删除我想要保留的航空边框。我可以设置最小/最大大小属性并完成它,除了:调整光标仍然可见,并且显示窗口是为了响应用户操作并适合其内容。它显示图像,因此大小会发生变化。所以,我有一个简单的方案,可以让我完成99%的工作:publicclassBorderedWindowNoResize:Window{[DllImport("DwmApi.dll")]publicstaticexternintDwmExtendFrameIntoCli

c# - 如何在 WPF 中使用自定义控件

我在C#中创建了一个自定义控件(重写了Button控件中的方法并添加了新事件)。我需要在我的wpf应用程序中使用这个控件。在WinForms中,我可以通过ToolBox(右键单击)-->ChooseItems-->Browse使用它。在WPF中,我无法导入自定义控件。有什么办法可以做到这一点 最佳答案 可能需要为某个项目重建,然后应该激活一个xaml文件。您的自定义控件应出现在工具箱中。如果它没有显示。您可以执行以下操作:在您的xaml文件中,在header标记的某处,您会看到许多xmlns:yyy,添加一个新的xmlns:例如:其

c# - WPF:MVP 与 MVVM

MVP和MVVM有什么区别?为什么我们使用MVP,即使我们有三个层:业务、数据访问和表示?将Presentation层划分为MVP有什么具体原因吗? 最佳答案 MVP和MVVM都是MVC的衍生物。MVC是一种将用户表示和交互与内部表示分离的模式。这需要三层,因为将用户交互/呈现直接绑定(bind)到内部表示会导致两者弯曲以相互适应。在您的应用程序中,您将这些层描述为表示层、业务层和数据访问层。只有那些非常松散的描述,您才有可能描述任何MVC衍生产品,或原始MVC模式本身。每个导数之间的主要区别在于每一层对其他层的依赖性,以及它们之间

c# - WPF 验证取决于必填/非必填字段

我是WPF开发的新手,但我正在考虑如何用一block石头杀死3只鸟。示例:我有一个包含2个文本框和2个文本block的表单。第一个“鸟”将能够“丰富”一些带有星号的文本block,如果它们引用必填字段:然后TextBlock将以不同方式显示其文本,第一个将带有星号,而未定义自定义属性的则不会。第二只鸟是对文本框的值进行某种验证,如果我理解正确的话,这是通过使用CustomValidationRule完成的,我为此实现了一个类:classAgeController:ValidationRule{publicoverrideValidationResultValidate(objectva

c# - WPF WrapPanel - 所有项目都应具有相同的宽度

我有一个ListBox,我已将其ItemsPanel替换为WrapPanel。WrapPanel现在托管数据绑定(bind)的ListboxItems。每个项目都有一个可变大小的文本,给每个项目一个不同的宽度。但是,我希望宽度保持不变,以便所有项目的宽度都与文本最长的项目的宽度相同。这可能吗? 最佳答案 将每个项目放置在单行单列(自动宽度)网格中,并为列命名。在ListBox上设置Grid.IsSharedSizeScope,所有网格将具有相同的宽度。 关于c#-WPFWrapPanel

c# - 在 WPF 应用程序中按下 Return 时如何模拟 Tab 键按下?

在WPF应用程序中,我有一个包含很多字段的窗口。当用户在填写每个字段后使用TAB键时,Windows知道它会移至下一个。这是众所周知的行为。现在我想要做的是让它模拟TAB键,而实际上RETURN被击中了。所以在我的WPFxaml中我添加了隐含的KeyDown="userPressEnter"在其背后的代码中:privatevoiduserPressEnter(objectsender,KeyEventArgse){if(e.Key==Key.Return){e.Key=Key.Tab//THISISNOTWORKING}}现在,显然这是行不通的。但我不知道的是,我该如何进行这项工作?编

c# - 防止 WPF 4.0 Datagrid 显示空列

我有一个带有1列数据网格的应用程序(目前)。如何从数据网格中删除第二个空列,以便数据网格中仅显示包含数据的列。 最佳答案 正如vorrtex在评论中所说,最好的办法可能是设置列宽以填充所有可用空间:...根据您使用的容器,您还可以将网格对齐到左侧,在其右侧留出空白空间:...希望这就是您要找的... 关于c#-防止WPF4.0Datagrid显示空列,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

c# - 我可以在 WPF 中设置窗口边框颜色吗?

我可以知道如何设置窗口样式或颜色吗?下图是我的WPF我想将我的窗口设置为类似于下面的应用程序:谢谢。 最佳答案 据我所知(4年多以前),您可以创建一个样式以用于WPF窗口。这是一个示例窗口样式:结果将如下所示:阅读更多关于CreateCustomWindowsinWPFwithEase的信息 关于c#-我可以在WPF中设置窗口边框颜色吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio

c# - 如何将通用项添加到绑定(bind)到 WPF 中的集合的 ComboBox

我在WPF应用程序中有一个ComboBox,它绑定(bind)到C#ViewModel类中Department对象的ObservableCollection。我想使用组合框按部门过滤另一个集合(现在确实适用)问题是我想在列表顶部添加一个附加选项“全部”。有没有正确的方法来做到这一点。制作一个假部门在很多方面都感觉不对。组合框 最佳答案 你可以使用CompositeCollection作为ComboBox的ItemsSource以包含“全部”选项。您需要将CollectionContainer的Collection属性设置为您的“部门