首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF 给库设置设计时使用的资源字典

开发 WPF 库时,由于库里面没有存在 App.xaml.cs 文件,而在对单个 XAML 进行开发时,设计器将会因为找不到资源文件的存在,而拿不到资源。...本文告诉大家简单的方法,给设计器设置仅在设计时引用的资源 WPF 的 XAML ,如果对每个 XAML 控件引用相同的资源,此时设计时将可以愉快的跑起来,然而在运行时将会重复创建资源影响性能。...开发 WPF 应用时,入口项目里面,因为入口处有 App.xaml 文件,在这个文件里面加上了各个项目的引用,此时设计器就能知道当前项目引用的 XAML 资源字典,因此设计器就能工作 但是开发库的时候...,库不知道最终的入口项目是哪个,因此也就不知道当前程序在运行的时候,将会引用 最佳的方法是和 Blend 一样,设计时让设计器引用上某些资源,这样设计器就能工作 实现方法是库里面添加特殊的文件,...理论上可以给任意的 xaml 文件设置这个属性,但是 XAML 设计器很多 VS 版本上只读取此路径的文件 DesignTimeResources.xaml 资源字典添加对其他资源字典的引用,即可实现让库的设计器找到资源

1.8K20

C# WPF MVVM开发框架Caliburn.Micro关于关于Actions⑤

设置此属性会将ActionMessage“handler”放置与您声明属性的节点相连的可视树。它还将DataContext设置为相同的值,因为您通常希望这两个值相同。...以下是可用附加属性的摘要: Action.Target 将Action.Target属性和DataContext属性设置为指定实例。字符串值用于从IoC容器解析实例。...首先,我们现在使用的是一个完全的POCO;这里没有INPC的问题。其次,我们SayHello方法添加了一个输入参数。...这有一点很好,每次参数值更改时,我们都会调用与操作关联的guard方法(本例为CanSayHello),并使用其结果更新ActionMessage附加到的UI。继续运行应用程序。...如果您主要在Xaml编辑器工作,而不是设计器工作,那么您会喜欢Message.Attach。请注意,Message.Attach声明都没有指定应该发送消息的事件。

2K20
您找到你想要的搜索结果了吗?
是的
没有找到

.NET控件Designer架构设计

和大家的讨论,觉得输入处理的流程太复杂,尤其是我开始的时候,为了减少ViewModel层的信息入口,不建议View去直接改变ViewModel,所有事件转发给ViewModel层来处理。...比如我们Winform Designer,就设计了一个DragService,用得非常频繁,原因就是Drag,不同的View需要协作来完成一些任务,它们只能通过DragService来协调。...微软的Winform Designer处于这种情况时有一个经典的变态处理,它需要放一个Runtime的ControlDesigner上,但不想让它的行为Designer起作用,或者某些情况下有选择的让它起作用...先看一下我们会怎样来设计View,为了便于用Xaml表达,我们一般会用UserControl来表达View,虽然CustomControl也能用Xaml,但它的xaml一般要写到Resource,所以我们一般不用...设置一个附加属性ViewProperties.ViewModel,把它绑定到DataContext上,这样就让View指向了ViewModel,附加属性ViewProperties.ViewModel

92350

win10 uwp 如何让 Page 继承泛型

本文告诉大家一个方法让 Page 继承一个泛型。 我使用自己的框架的时候,发现每个页面需要添加一些相同的代码,所以就想把他写出来,作为一个基础的 Page 。...因为需要使用下面的代码才可以从页面拿到传入的 ViewModel ,所以所有的页面添加相同的代码,软件上是比较差的 public sealed partial class MainPage... 这时编译出现 Error CS0305: 使用泛型 类型“DslujbefGgtvl”需要 1 个类型参数 (1, 1) ,所以看起来...这个方法需要添加一个,但是还有另一个方法可以写在框架,需要把 xaml 继承 Page 修改为 IPage public sealed partial class MainPage : DslujbefGgtvl...> 所以 page 不可以继承泛型,但是可以继承接口,所以框架可以使用这个方法让

84010

WPF 如何在绑定失败异常

开发 WPF 程序,虽然 xaml 很好用,但是经常会出现小伙伴把绑定写错了。因为默认的 VisualStudio 是没有自动提示,这时很容易复制粘贴写出一个不存在的属性。... xaml 如果绑定失败了,那么内部会有一个异常,但是 WPF 不会把这个异常抛出来,这个异常也不会让用户拿到,只是会在输出窗口提示。...绑定失败异常建议只调试下抛出,抛出异常建议弹出,告诉开发者现在你的界面有绑定异常 拿到绑定信息 先来写简单的代码,做一个 ViewModel ,里面有两个属性 class ViewModel...先在 对应的窗口写入绑定的类型,使用d:DataContext可以告诉 xaml 使用的数据类型,这样做绑定就可以自动提示 <Grid d:DataContext="{d:DesignInstance...我很建议大家安装 Resharper 这样修改变量名时,会自动修改 xaml 的属性名 在有安装 Resharper 的设备,修改一个属性名,然后按 Alt+enter 就会提示 apply rename

1.2K20

win10 uwp 如何让 Page 继承泛型

本文告诉大家一个方法让 Page 继承一个泛型。 我使用自己的框架的时候,发现每个页面需要添加一些相同的代码,所以就想把他写出来,作为一个基础的 Page 。...因为需要使用下面的代码才可以从页面拿到传入的 ViewModel ,所以所有的页面添加相同的代码,软件上是比较差的 public sealed partial class MainPage... 这时编译出现 Error CS0305: 使用泛型 类型“DslujbefGgtvl”需要 1 个类型参数 (1, 1) ,所以看起来...这个方法需要添加一个,但是还有另一个方法可以写在框架,需要把 xaml 继承 Page 修改为 IPage public sealed partial class MainPage : DslujbefGgtvl...> 所以 page 不可以继承泛型,但是可以继承接口,所以框架可以使用这个方法让

47910

WPF 如何在绑定失败异常

开发 WPF 程序,虽然 xaml 很好用,但是经常会出现小伙伴把绑定写错了。因为默认的 VisualStudio 是没有自动提示,这时很容易复制粘贴写出一个不存在的属性。... xaml 如果绑定失败了,那么内部会有一个异常,但是 WPF 不会把这个异常抛出来,这个异常也不会让用户拿到,只是会在输出窗口提示。...第二个 ViewModel 的属性是 JaslorbafelStojou 但是 xaml 写的是 JaslorbafelStoj ,如果这时看到了输出,就会看到下面代码 System.Windows.Data...先在 对应的窗口写入绑定的类型,使用d:DataContext可以告诉 xaml 使用的数据类型,这样做绑定就可以自动提示 <Grid d:DataContext="{d:DesignInstance...我很建议大家安装 Resharper 这样修改变量名时,会自动修改 xaml 的属性名 在有安装 Resharper 的设备,修改一个属性名,然后按 Alt+enter 就会提示 apply rename

2.2K10

WPF 中用户控件 DataContextBinding 和依赖属性的问题

好,我的问题是,我有一个用户控件, Xaml ,我绑定了一些颜色到颜色属性,如下所示: <GradientStop x:Name="stop1" Color="{Binding Color1}" Offset...如果我使用下面的构造函数,构造函数的颜色改变工作正常,然而,我的 IsActivePropertyChangedEvent 从未被触发。我估计是因为构造函数中指定了 DataContext。...我尝试了为 Xaml 绑定到 Color 属性的元素设置 DataContext="{Binding RelativeSource={RelativeSource Self}}" (而不是在后台代码设置...The previous example would not work, and this wouldn't work either: 这会覆盖 Xaml 设置的任何 DataContext ,会使得绑定变成一个大痛苦...(总之,)开发一个控件时就别碰 DataContext ,你将会一切顺利。

91310

WPF 使用 HandyControl 给 ListView 添加漂亮的表头效果

本文将来安利大家一个很好用的 UI 控件库,著名的 HandyControl 库。...在想要给 ListView 添加一个表头,同时想要这个 ListView 没有美工小姐姐的帮助下也能看起来比较好看,此时就特别适合使用 HandyControl 库 大概做出来的效果如下 ?...如果小伙伴有自己的数据,那么这一步也可以跳过 先创建一个用来测试的,如下面代码的 Foo public class Foo { public int Index {...为 MainWindow 自身,因为咱没有创建一个 ViewModel 而是 MainWindow 里面创建一个属性。...设置 DataContext 为 MainWindow 将可以绑定 MainWindow 定义的属性 DataContext = this; 最后一步就是界面啦 打开 MainWindow.xaml

3.2K20

WPF 列表控件数据源绑定多个数据集合方法

咱需要将两个 ObservableCollection 对象作为数据源,放在相同的一个 ListBox 里面 下面是多个不同的实现方式,解决如何在 WPF ListBox 或 ListView 绑定多个数据集合...TextBlock> 对比上面的方法,此方法可以让绑定集合的代码只写一次,看起来代码更少一点...原因是资源本身定义 Resources 里面。为什么资源需要定义控件里面的 Resource 里面?原因是为了获取到控件的 x:Reference 对象。...代码量最小,只是需要一个辅助的 CompositeCollectionConverter ,代码如下 public class CompositeCollectionConverter :...代码看起来简单 本文所有代码放在 github 和 gitee 欢迎小伙伴访问 参考 本文以上方法参考了如下博客 c# - CompositeCollection + CollectionContainer

3.3K21

win10 uwp MVVM入门

UWP 虽然可以直接在xaml.cs 写逻辑但是我们是推荐使用 MVVM 框架,写一个自己的框架也很简单。 本文主要:如何在 UWP 使用 MVVM,如何做一个自己的框架。...软件,可以这样看,我们看到的都是界面,看不到的就是后台, UWP 我们说的 View 一般是 page UserControl 等。...我建议大家把 DataContext 写在 xaml ,至于为何这样是我推荐的,卖个关子,大家自己试试,把 DataContext 写在xaml.cs和 xaml 中看下 xaml 的提示补全,就知道为何推荐这个方法...软件开发,怎么可以说不可能呢,我们有一个简单的方法。...那么我们可以做一个静态的 ViewModel ,其他页面直接从 ViewModel 拿。 假如我们有个页面 APage , AModel ,那么把 AModel 写在ViewModel ?

1.9K10

WPF --- 如何以Binding方式隐藏DataGrid列

我疑惑了很久,直到看到了Visual Studio的实时可视化树: 从图中可以看出,虽然 Xaml 声明了两列 DataGridTextColumn,但他根本不在可视化树。...「获取 RelativeSource 和指定 ElementName 的方式,本质上还是可视化树寻找元素」,所以上述方案无法生效。...「所有继承自 Visual 或 UIElement(UI 元素的更高级别抽象)的对象存在于可视化树。」...首先该对象必须是 DependencyObject 类型或其子类,这样才能使用依赖属性 Xaml 进行绑定,其次必须有属性变化通知功能,这样才能触发 VisibilityConverter,实现预期功能...该抽象是 DependencyObject 的子类,能使用依赖属性 Xaml 进行绑定,且有属性变化通知功能,触发 VisibilityConverter转换器,实现了预期功能。

30910

VisualStudio 给文件起一个带分号的文件名会怎样

小伙伴知道 Windows 下是支持文件名使用分号的,而写过 Roslyn 的小伙伴知道, csproj 项目里面使用分号分割数组。那么 VS 里面将一个文件名添加分号会如何?...│ MainWin;dow.xaml │ MainWin;dow.xaml.cs │ └─Properties AssemblyInfo.cs Resources.Designer.cs...MainWin;dow.xaml 此时虽然 VS 可以打开,但是使用 dotnet build 构建,会提示下面代码 MSBUILD : error MSB1025: An internal failure..."MainWin;dow.xaml.cs" Properties\AssemblyInfo.cs P roperties\Resources.Designer.cs Properties\Settings.Designer.cs...的输出文件 MainWin;dow.g.cs 分为两个文件,此时就发现找不到 dow.g.cs 文件 构建之后的 obj 文件夹里面创建了 MainWin;dow.g.cs 文件,所以文件是对的,存在坑的是

47710

C#语法——消息,MVVM的核心技术。

C#消息有两个指向,一个指向Message,一个指向INotify。这里主要讲INotify。 INotify也有人称之为[通知],不管叫消息还是通知,都是一个意思,就是传递信息。...那么学习应用消息的方法就出现了,即,创建一个继承INotifyPropertyChanged接口的,然后内,实现PropertyChanged就可以了。...我们可以看到Xaml文件,Text属性可以使用{Binding KName}这种简写的模式,来实现刚才那个复杂的binding赋值。...而在Xaml.cs文件,我们将VeiwMode赋值给了DataContext这个数据上下文,然后,我们就看到了,前台直接使用了VM里的属性。 这样简单的MVVM就实现了。...虽然实现方式不一样,但道理是一样的。

1.1K20

2020-1-8-如何正确的tooltip实现绑定

---- 我们知道常见的绑定数据源来自以下几种: DataContext ElementName ReferenceSource 但是对于ToolTip来说这边就不好直接使用了 例如下面的代码使用了ElementName...首先,Binding的ElementName属性是一个String,他会直接从当前的NameScope找对应的对象。...所以就虽然记录了ElementName,但是无法找到指定对象。 同样的原理,DataContext和ReferenceSouce也是无法跨域逻辑树传递或找寻的。...为什么第二个例子可以 而{x:Reference}这里是xaml语言级别的查找,它的算法不是依赖于逻辑树向上查。 他是xaml生成元素的同时,查找当前的NameScope。...可以这样使用Binding PlacementTarget的方式获取Tooltip附加的对象的DataContext 然后,这个DataContext就可以ToolTip的逻辑树上传递了 ? ?

1.6K20

将 WPF、UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj

GitHub 的讨论(XAML files are not supported · Issue #1467 · dotnet/project-system),.NET Core 的开发者们是这么说的...比如,你可能放入项目的不止有 cs 文件,还有其他各种用途的资源——你需要重新选中他们然后属性面板设置文件的生成属性。...然而我并不知道是否是因为旧版本的 Visual Studio 2017 不支持新 csproj 编译 XAML。...你 必须将 Visual Studio 升级到 15.8 以上的版本,否则WPF 或者 UWP 项目迁移成新项目之后,默认新建的 XAML 文件会不可见,每次需要手工去 csproj 删掉自动增加的错误的...WPF 或者 UWP 项目迁移成新项目之后,默认新建的 XAML 文件会不可见,每次需要手工去 csproj 删掉自动增加的错误的 XAML 编译类型。

1.4K20

谈谈数据绑定

>             <Binding...JSP ,JSTL 定义了一系列标签库,不过本质上没有什么区别: 20} 这样的表达式执行前会被编译引擎编译成最终执行的代码。虽然看起来有些生涩,但是已经比啰嗦的 XML 好多了。 上面这两种形式结合起来,已经是我们最常用的情形了。...// using inclusive map bindData(target, params, [include: ['firstName', 'lastName']], "author") 还有那种代码利用注解搞定的...我们曾经见证过随着软件的发展,写一个 web 应用逐渐解耦的过程,但是现在也有很多人跳出来说,不,太罗嗦了,又是 model 又是 view 又是 viewmodel 的,数据应该最天然地和展示结合起来,不需要额外定义专门的和对象

82920

WPF MVVM实例一

2 Model实现 Model文件夹下新建业务StudentModel(文件StudentModel.cs),的详细代码如下所示。...3 ViewModel实现 ViewModel文件夹下新建文件StudentViewModel.cs,文件的详细代码如下所示。...WinForm开发,我们一般会直接操作界面的元素(如:TextBox1.Text=“aaa”),这样一来,界面变化后,后端逻辑代码也需要做相应的变更。...WPF中使用数据绑定机制,当数据变化后,数据会通知界面变更的发生,而不需要通过访问界面元素来修改值,这样在后端逻辑代码也就不必操作或者很少操作界面的元素了。...使用MVVM,可以很好的配合WPF的数据绑定机制来实现UI与逻辑代码的分离,MVVM的View表示界面,负责页面显示,ViewModel负责逻辑处理,包括准备绑定的数据和命令,ViewModel通过View

63030
领券