簡體   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