簡體   English   中英

如何將我的代碼隱藏綁定更改為XAML綁定

[英]How to change my code-behind binding to XAML binding

我是C#和WPF的新手。 我寫了一個簡單的程序。 我有一個稱為Counter的類,它公開一個以0開始的只讀屬性Count ,以及一個僅將計數加1的公共方法Increment Counter實現INotifyPropertyChanged

我有一個Window類(下面的代碼)。 我將Counter對象的實例傳遞給構造函數並執行綁定。 該窗口有一個按鈕和一個標簽。 標簽綁定到計數器的Count屬性,並且按鈕調用Increment

所有這一切。

但是,我在網上看到的大多數示例和MSDN大多涉及在XAML中定義綁定。 如何在此處修改示例,以將綁定操作移出代碼的后面並移入標記中? VS2010的“屬性”窗口中的Binding屬性似乎不知道該怎么做。 也許不可能嗎?

另一個問題:我認為此示例不適合MVVM ...我的Counter類是單獨存在的,除了通過其屬性之外,不與任何視圖綁定。 但是,CounterWindow類保留對其的引用。 這是該參考的正確位置嗎? 我也盡管也許我應該創建窗口,然后設置一個我將使用的屬性(例如CounterObject ),而不是通過構造函數進行傳遞。

public partial class CounterWindow : Window {
    Counter ctr;

    public CounterWindow(Counter ctr) {
        InitializeComponent();

        this.ctr = ctr;
        Binding b = new Binding("Count");
        b.Source = ctr;
        CounterLabel.SetBinding(Label.ContentProperty, b);
    }

    private void IncrementButton_Click(object sender, RoutedEventArgs e) {
        ctr.Increment();
    }
}

像這樣:

public CounterWindow(Counter ctr) 
{
    InitializeComponent();
    DataContext = ctr;
}

標記:

<Label Content="{Binding Count}" />  

UPD MVVM中有兩種常見方法:視圖優先和模型優先。
視圖首先意味着您首先創建視圖,然后視圖創建​​綁定到的視圖模型。
“模型優先”意味着首先創建視圖模型,然后視圖模型創建其視圖,並將自身(通過構造函數或通過DataContext屬性設置器)傳遞為視圖的數據上下文。

希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM