WPF中,如何将绑定源设置到单件实例

WPF中,如何将绑定源设置到单件实例,第1张

public class MyButton : Button{private MyButton(){this.Content = "hahhaha, it's me"} private static MyButton instance = new MyButton()public static MyButton Instance{get {return instance} } //public static MyButton GetInstance()//{// return instance<Label Content="{绑定到MyButton的单件实例上(即Instance)}"/>Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>1,若是使用属性方式提供: 这比较简单,你只需要了解x:Static标记就足够了.它负责对静态数据的引用.首先,在Xaml代码中加入我们的名字空间:xmlns:local="clr-namespace:WpfApplication3" 然后,这样使用就OK:<TextBox Text="{Binding Source={x:Static local:MyButton.Instance},Path=Content,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>看看效果吧:改变下面文本框的文本,上面按钮上的文本也会随之改变,都是引用到同一个单例嘛:)2,若是使用方法方式提供: 即采用下面的方式提供的public static MyButton GetInstance(){return instanceOK,我们在资源字典中添加一个如下的ObjectDataProvider:<Window.Resources><ObjectDataProvider x:Key="myButtonKey" ObjectType="{x:Type local:MyButton}" MethodName="GetInstance"/></Window.Resources>其将从MyButton类中的GetInstance方法的返回值取得对象,然后我们就可以像使用普通资源一样使用它了:<TextBox Text="{Binding Source={StaticResource myButtonKey},Path=Content,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>效果图就不必看了哈,和上面的图一模一样.另外:说到x:Static,另起一个问题: *** 作系统给我们提供很多资源,比如:桌面工作区的大小,系统颜色等,应该如何跟踪这些值呢.以前我的一个同事遇到这样一个问题,其应用程序主窗口铺满整个桌面工作区,但该窗口没有边框,其将窗口大小绑定到SystemParameters.WorkArea.Width和SystemParameters.WorkArea.Height上的,但其发现用户更改了工作区大小(比如将任务栏拖高一些,工作区就变小了)后,窗口却不知道这事而无法及时调整自身大小来适合新的工作区大小.这里需要说明的是,我们对应静态数据的引用常常会写成下面这种方式:{x:Static SystemColors.WindowBrush},这是有效的,但当WindowBrush值发生变化后,你的应用是不会随之改变的正确的方式是:

1.首先创建一个Image实例 Image image1 = new Image()

2.然后创建一个BitmapImage BitmapImage bi = new BitmapImage()

bi.BeginInit()

bi.UriSource = new Uri(@"放入图片的地址", UriKind.RelativeOrAbsolute)

bi.EndInit()

3.然后指定图片的资源

image1.Source = bi

去试一下吧 我在项目中用过 可以成功

WPF界面的简单设计方法是:先做出基本的布局,放好基本的控件,再美化。通过不同的层次来对界面进行良好的设计:

一、Presentation表示层:XAML文件,Windows,UserControls,CustomControls,ValueConverters,Resources;这一层是负责任的外观和感觉的应用程序。它包含了WPF的意见,用户控件,自定义控件和资源,样式,模板等。ValueConverters也很普遍,尤其是在这一层时,转换成WPF的一个对象,例如转换成ImageSource枚举值等较低层的数据。

二、Application层:ApplicationController,UserCase Controllers,IViews,ViewModels;应用层是负责为应用程序的工作流程。一种常见的方法来为一个静态的工作流程是通过控制器类。建立在应用层的常见WPF类型的有:ICommand接口-命令模式WeakEventManager类-弱事件Dispatcher类-与UI线程同步ICommand interface–Command。

三、Domain层:如人或者通讯录,该域名层负责业务逻辑和业务逻辑只负责。例如,任何UI特定的代码将在这里打破了分层架构的原则。

四、Bussiness Infrastructure层:商业基础设施层包含这些特定领域可重复使用的服务。与Domain层不同的是,这一层的类型可以在其他Domain层,而重用是软件系统只为它创造了系统设计。

五、Technical Services层:高层次技术服务和框架(例如持久性和验证等)技术服务层包含“高层次”服务,是独立的业务。这些服务大多是一个可重用的库或框架的一部分。例如持久性框架(如ADO的.NET的实体框架)和验证框架(如System.ComponentModel.DataAnnotations)。

六、Foundation层:底层技术服务和框架(例如数据结构,具体集合类,日志)该层是最靠上一层,因为所有层可以利用这层类型。因此,它必须比其他层的稳定,这意味着在稳定现有的签名而没有改变其行为方面。 例如集合类(如清单<T>中)和日志(如TraceSource)。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11177192.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存