首先,让我为关于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”中包含的元素。“
我知道我不想让构造函数公开(因此摆脱单例的东西),我知道该怎么做。
任何指向正确方向的指针?
谢谢你们的帮助。
答案 0 :(得分:0)
首先,您在显示字符串属性时遇到问题。您必须使用文本框,然后使用属性进行文本绑定:
<TextBox Text="{Binding Path=myStringProperty}"/>
此外,您必须将您的类(视图模型)设置为Window.DataContext,并且您的属性必须调用OnPropertyChanged事件(请参阅:WPF: simple TextBox data binding)。
现在关于单身人士。不应该使用单身人士。你应该有窗口(视图),那个窗口必须使用某个类(视图模型,每个窗口有一个实例),如果你想一起运行更多的窗口,你总是想要相同的结果,那么在那个视图模型里面你应该有一些静态对象(它可以是那个定时器,或者是一些类来处理有关从定时器获取结果的请求,该类将在该类中可以是单例)。所以它看起来像Window(view) - &gt;查看模型类 - &gt;静态计时器/类,它将与计时器本身一起使用。