WPF之积累

WPF中的ShowDialog方法与Show方法

InputWindow inputwin=new InputWindow();
bool? b=inputwin.ShowDialog();

——如果窗口是用ShowDialog方法打开的,那么新窗口中对DialogResult赋值会自动关闭新窗口,并且把DialogResult的值通过ShowDialog方法的返回值返回。

——ShowDialog()的返回值类型是bool?,而Show()的返回值类型是void,如在新窗口中没有对DialogResult属性进行赋值,直接关闭窗口,那么返回值为false。

自行指定绑定的数据源RelativeSource
在数据绑定中,除了正常的数据模版绑定,还会涉及到模板内控件的事件绑定,在模板的数据绑定中只能显示绑定的XXXModel中的字段,因为DataContext类型为XXXModel。我们想绑定XXXViewModel中的CompleteCommand事件,就需要自行指定绑定的数据源。(其他属性如Content的绑定也同此)

<Window>
  <Button Command="{Binding DataContext.XXXCommand, RelativeSource={RelativeSource AncestorType=Window}}" CommandParameter="{Binding Path=DataContext, RelativeSource={RelativeSource  Mode=FindAncestor, AncestorLevel=1,AncestorType=ItemsPresenter}}" />
</Window>

AncestorLevel来确定向上查找的级别,AncestorType确定要查找的元素

DataGrid控件的过滤(Filter)

在界面上过滤条件A==条件B的数据

 Predicate<object> filter = new Predicate<object>((x) => (条件A==条件B));
 CollectionViewSource.GetDefaultView(xaml绑定的ItemSource).Filter = filter;
### WPF 中 Prism 框架的使用指南 #### 1. Prism 框架简介 Prism 是由 Microsoft 推出的一个开源框架,旨在为 WPF 和其他 .NET 平台提供模块化的解决方案[^2]。该框架的核心理念是通过 MVVM(Model-View-ViewModel)模式实现应用的分离关注点设计,从而提升代码的灵活性、可维护性和可测试性。 #### 2. 主要功能特点 Prism 提供了一系列工具和机制来简化复杂的应用程序开发过程: - **模块化开发**:允许将应用程序拆分为多个独立的功能模块,便于团队协作和后期扩展。 - **依赖注入容器**:支持多种 DI 容器(如 Unity、Autofac),用于管理对象的创建和生命周期[^4]。 - **事件聚合器**:实现了松耦合的消息传递机制,使得不同组件之间可以安全地通信而不需直接引用彼此。 - **导航服务**:提供了强大的视图切换能力,能够定义复杂的 UI 流程逻辑[^4]。 #### 3. 开发环境准备 在开始之前,需要安装 Visual Studio 或者其他兼容 IDE,并确保已启用“.NET Desktop Development”工作负载选项。此外还需要下载并引入 NuGet 包 `Prism.Wpf` 到您的项目当中: ```bash Install-Package Prism.Wpf ``` 或者如果您正在使用 dotnet CLI 工具,则可以通过如下命令完成相同操作: ```bash dotnet add package Prism.Wpf ``` #### 4. 配置基本结构 一个典型的基于 Prism 的 WPF 应用通常包含以下几个部分: - **Bootstrapper/Startup Class**: 负责初始化整个应用程序以及设置必要的运行时参数; - **Modules**: 表示各个业务领域内的子系统集合体; - **Views & ViewModels**: 对应于用户界面及其背后的数据绑定源文件夹; 下面展示了一个简单的启动类例子: ```csharp public class Bootstrapper : UnityBootstrapper { protected override DependencyObject CreateShell() { return Container.Resolve<MainWindow>(); } protected override void InitializeShell() { base.InitializeShell(); Application.Current.MainWindow.Show(); } } ``` 此段代码片段展示了如何重写默认行为以自定义 Shell 创建流程。 #### 5. 实践案例分析 对于初学者来说,可以从官方样例仓库 [Prism-Samples-Wpf](https://github.com/PrismLibrary/Prism-Samples-Wpf) 学习实际应用场景下的最佳实践方法[^1]。这里涵盖了从基础概念到高级特性的全面覆盖范围,非常适合用来加深理解理论知识的同时积累实战经验。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值