繁体   English   中英

将单例属性绑定到XAML标记

[英]Binding singleton property to XAML markup

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

我想要做的是:我有一个按钮,上面写着“开始”,我希望在单击时将按钮内容更改为计时器+停止,例如“ 00:00:02-Stop”,然后在再次单击,将其更改回“开始”。

我将此类设计为单例,以防止它被多次实例化,其中包含System.Diagnostics.Stopwatch的实例stopwatch和一个字符串属性,我将其更改为"Start"stopwatch.Elapsed.TotalSeconds.ToString () + "Stop"来回。

问题是,当我尝试在XAML标记中引用我的单例类时(老实说,我真的不知道自己在做什么,我只是从我发现的各种示例中启发自己通过网络):

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

    <Grid>
        <local:mySingleton x:Key="myStringProperty" />
        ...
    </Grid>
</Window>

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

我不知道该怎么做,因为我不想公开构造函数(因此摆脱了单例的事情)。

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

谢谢你们的帮助。

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

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

另外,您还必须将类(视图模型)设置为Window.DataContext,并且属性必须调用OnPropertyChanged事件(请参见: WPF:简单的TextBox数据绑定 )。

现在关于单例。 单例不应该用于此目的。 您应该有一个窗口(视图),并且该窗口必须与某个类一起工作(视图模型,每个窗口有一个实例),如果您想一起运行更多窗口,并且始终希望得到相同的结果,那么在该视图模型内应该有一些静态对象(可以是计时器,也可以是一些类,它将处理来自计时器的获取结果的请求,该类内部可以是单例)。 因此它看起来像Window(视图)->视图模型类->静态计时器/类,它将与内部计时器一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM