C# 将singleton属性绑定到XAML标记

C# 将singleton属性绑定到XAML标记,c#,wpf,binding,singleton,C#,Wpf,Binding,Singleton,首先,请允许我为有关WPF和绑定的SuperNoob问题道歉。几天前,我开始对WPF及其在Visual Studio Express 2013中使用XAML标记和C代码实现感兴趣,我正在尝试将按钮的内容绑定到作为singleton类一部分的属性。显然,我不能 我想做的是: 我有一个按钮,上面写着开始,我想在点击时,让按钮内容变为计时器+停止,比如00:00:02-停止,然后再次点击,让它变回开始 我将这个类设计为一个单例,以防止它被多次实例化,它包含System.Diagnostics.stop

首先,请允许我为有关WPF和绑定的SuperNoob问题道歉。几天前,我开始对WPF及其在Visual Studio Express 2013中使用XAML标记和C代码实现感兴趣,我正在尝试将按钮的内容绑定到作为singleton类一部分的属性。显然,我不能

我想做的是: 我有一个按钮,上面写着开始,我想在点击时,让按钮内容变为计时器+停止,比如00:00:02-停止,然后再次点击,让它变回开始

我将这个类设计为一个单例,以防止它被多次实例化,它包含System.Diagnostics.stopwatch的实例stopwatch,以及一个字符串属性,我将其更改为Start或stopwatch.Appeased.TotalSeconds.ToString+Stop来回

问题是,当我试图在XAML标记中引用我的singleton类时,老实说,我并不知道我在做什么,我只是从我在web上找到的各种示例中启发自己:

<Window
    ...
    xmlns:local="clr-namespace:myNameSpace">

    <Grid>
        <local:mySingleton x:Key="myStringProperty" />
        ...
    </Grid>
</Window>
我得到了大量的编译器错误,其中有人说:mySingleton类型不包括任何可访问的构造函数。并且Key属性只能用于IDictionary中包含的元素

我不知道该怎么做,因为我知道我不想将构造函数公开,从而摆脱单例的东西

有没有指向正确方向的指针


感谢大家的帮助。

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

<TextBox Text="{Binding Path=myStringProperty}"/>
您还必须将类视图模型设置为Window.DataContext,并且您的属性必须调用OnPropertyChanged事件,请参见:


现在谈谈单身汉。不应该使用singleton。你应该有一个窗口视图,这个窗口必须和一些类视图模型一起工作,每个窗口有一个实例,如果你想同时运行更多的窗口,你总是想要相同的结果,那么在这个视图模型里面你应该有一些静态对象,它可以是计时器,或者某个类将处理关于从计时器获取结果的请求,该计时器将在该类中处理可以是单例的内容。因此,它可能看起来像窗口视图->视图模型类->静态计时器/类,它将与自身内部的计时器一起工作。

摆脱单例。不是因为XAML的问题,而是因为很有可能是错误的模式。你为什么要单身呢?单例将破坏所有单元测试。