2011-07-26 20 views
0

我有兩個文本框和一個複選框(和其他類似的情況),在這裏我想我的程序稍後會使用其底層數據對象(兩個整數)除非複選框被選中,否則它們應該等於文本框中的內容,它們應該分別爲0和Int.max。C#,XAML,WPF:最好的辦法複雜的結合,包括文本框和複選框

用WPF綁定做這件事的最好方法是什麼?我假設我不得不使用多重綁定?如果甚至有可能(?),則另一種可能性是將值鏈接在一起,即checkbox.IsChecked通過一些自定義轉換器綁定到textBox.Text,該自定義轉換器綁定到基礎數據對象。

你會如何做到這一點?在我看來,多重約束在某種程度上累積地影響其他事物,並且鏈接在任何可能的情況下更有意義,這對多重約束是有意義的。我有一個類似於上面的情況,但還包含一個Slider。

回答

0

我會使用MVVM方法。在視圖模型層中,您可以根據自己的目標放置任何您希望使用戶界面行爲的邏輯。簡單,快速和可靠。

1

最簡單的方法是使用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,並綁定到CheckBoxUseMinMax。然後使用ActualMinActualMax獲取要使用的實際值。

+0

您的最小值和最大值也需要提高OnPropertyChanged的ActualMin和ActualMax – Ray

+0

這應該是VM類,對吧?模型發生了什麼?根據MVVM,模型中不應該_min,_max等嗎? –

+0

@Ray,謝謝,它現在 –