将singleton属性绑定到XAML标记

时间:2014-07-30 13:01:14

标签: c# wpf binding singleton

首先,让我为关于WPF和绑定的超级菜鸟问题道歉。几天前,我已经开始使用XAML标记和Visual Studio Express 2013中的C#代码隐藏对WPF及其实现感兴趣,并且我正在尝试将按钮的内容绑定到属性的属性单身人士班。我显然不能。

我想做的是: 我有一个按钮,说“开始”,我希望,点击,按钮内容更改为计时器+停止,如“00:00:02 - 停止”,再次点击,让它更改回来“开始”。

我将这个类设计为单例,以防止它被多次实例化,其中包含stopwatch的实例System.Diagnostics.Stopwatch和一个字符串属性,我将其更改为{ {1}}或来回"Start"

问题在于,当我尝试在XAML标记中引用我的单例类时,就像这样(说实话,我真的不知道我在做什么,我只是从不同的例子中鼓舞自己通过网络找到了:

stopwatch.Elapsed.TotalSeconds.ToString () + "Stop"

我得到了一大堆编译器错误(总共6个),其中一些人说:“mySingleton类型不包含任何可访问的构造函数。”和“The Key”属性只能用于“IDictionary”中包含的元素。“

我知道我不想让构造函数公开(因此摆脱单例的东西),我知道该怎么做。

任何指向正确方向的指针?

谢谢你们的帮助。

1 个答案:

答案 0 :(得分:0)

首先,您在显示字符串属性时遇到问题。您必须使用文本框,然后使用属性进行文本绑定:

<TextBox Text="{Binding Path=myStringProperty}"/>

此外,您必须将您的类(视图模型)设置为Window.DataContext,并且您的属性必须调用OnPropertyChanged事件(请参阅:WPF: simple TextBox data binding)。

现在关于单身人士。不应该使用单身人士。你应该有窗口(视图),那个窗口必须使用某个类(视图模型,每个窗口有一个实例),如果你想一起运行更多的窗口,你总是想要相同的结果,那么在那个视图模型里面你应该有一些静态对象(它可以是那个定时器,或者是一些类来处理有关从定时器获取结果的请求,该类将在该类中可以是单例)。所以它看起来像Window(view) - &gt;查看模型类 - &gt;静态计时器/类,它将与计时器本身一起使用。