簡體   English   中英

C#,XAML,WPF:進行復雜綁定(包括文本框和復選框)的最佳方法

[英]C#, XAML, WPF: Best way to do complex binding including textboxes and checkboxes

我有兩個文本框和一個復選框(以及其他類似情況),在這里我希望程序以后使用的基礎數據對象(兩個int)等於文本框中的內容,除非選中該復選框,在這種情況下它們應該分別為0和Int.max。

使用WPF綁定執行此操作的最佳方法是什么? 我認為我必須以某種方式使用多重綁定? 另一種可能性是,如果可能的話,將值鏈接在一起(?),即checkbox.IsChecked通過某個自定義轉換器綁定到textBox.Text,該自定義轉換器綁定到基礎數據對象。

你會怎么做? 在我看來,多重綁定是有意義的,其中多個事物以某種方式累積影響另一事物,並且鏈式在任何可能的地方都更有意義,對嗎? 我有一個與上面類似的情況,但還包括一個滑塊。

最簡單的方法是使用MVVM方法。 構建一個實現所需邏輯的ViewModel:

public class MyViewModel : ViewModelBase
{
    private int _min;
    public int Min
    {
        get { return _min; }
        set
        {
            _min = value;
            OnPropertyChanged("Min");
            OnPropertyChanged("ActualMin");
        }
    }

    private int _max;
    public int Max
    {
        get { return _max; }
        set
        {
            _max = value;
            OnPropertyChanged("Max");
            OnPropertyChanged("ActualMax");
        }
    }

    private bool _useMinMax;
    public bool UseMinMax
    {
        get { return _useMinMax; }
        set
        {
            _useMinMax = value;
            OnPropertyChanged("UseMinMax");
            OnPropertyChanged("ActualMin");
            OnPropertyChanged("ActualMax");
        }
    }

    public int ActualMin
    {
        get { return _useMinMax ? _min : 0; }
    }

    public int ActualMax
    {
        get { return _useMinMax ? _max : int.MaxValue; }
    }

}

將文本框綁定到MinMax ,然后將CheckBox綁定到UseMinMax 然后使用ActualMinActualMax獲取要使用的實際值。

我會使用MVVM方法。 在視圖模型層中,您可以輸入想要使U​​I表現出目標的任何邏輯。 簡單,快速,可靠。

您可以使用MVVM。 在這里,有視頻,還有免費:

http://windowsclient.net/learn/video.aspx?v=288066

暫無
暫無

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

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