2011-04-08 551 views
0

我有一個TextBox,它的Text屬性綁定到名爲Gradedouble類型的屬性。我還有一個CheckBox,當CheckBox被選中時,我希望Grade採用自動計算的值(即自動設置爲MaxScore /問題計數)。如果沒有選中CheckBox,那麼我想手動設置並更改Grade。我的問題是我該如何執行此操作?textbox中的默認文本wpf

<TextBox Height="23" 
    Visibility="{Binding Path=Visible2, Converter={StaticResource boolToVis}, UpdateSourceTrigger=PropertyChanged}" 
    Text="{Binding Path=Grade,UpdateSourceTrigger =PropertyChanged,Mode=TwoWay}" 
    HorizontalAlignment="Left" Margin="376,453,0,0" 
    Name="textBox3" VerticalAlignment="Top" Width="120" /> 

和我結合這:

public double Grade 
     { 
      get 
      { 

       return grade; 
      } 
      set 
      { 
       grade = value; 
       OnPropertyChanged("Grade"); 

       foreach (ExaminationQuestion exaq in 
         this.Examination.ExaminationQuestions) 
       { 
        if (exaq.Question.Guid == SelectedQuestionDropList.Guid) 
        { 
         exaq.Grade = value; 
        } 
       } 
      } 
     } 

感謝您的VM

回答

0

,還有一個公共財產汽車,並確保您的複選框綁定到它,所以做你的文本框(所以它變成只讀/禁用/隱藏)。而我的默認自動檢查將是真正的

0
<StackPanel Orientation="Horizontal" VerticalAlignment="Top"> 
     <Label Content="Grade" /> 
     <TextBox Height="23" Width="120" 
       Text="{Binding Path=GradeDisplay}" 
       IsEnabled="{Binding EnableBox}" 
        /> 
     <Label Content="Auto?" /> 
     <CheckBox IsChecked="{Binding IsAuto}" /> 
    </StackPanel> 

而對於視圖模型

public bool EnableBox { get; set; } 
    public string GradeDisplay 
    { 
     get 
     { 
      if (EnableBox) 
       return Grade.ToString(); 
      else 
       return "AUTO"; 
     } 
     set 
     { 
      double result; 
      if (double.TryParse(value, out result)) 
       Grade = result; 
      NotifyPropertyChanged("GradeDisplay"); 
     } 
    } 


    private bool _IsAuto;   
    public bool IsAuto 
    { 
     get 
     { 
      return _IsAuto; 
     } 

     set 
     { 
      _IsAuto = value; 
      EnableBox = !value; 
      NotifyPropertyChanged("GradeDisplay"); 
      NotifyPropertyChanged("EnableBox"); 
     } 
    } 

    private double _Grade; 
    private double Grade 
    { 
     set 
     { 
      _Grade = value; 
     } 
     get 
     { 
      if (IsAuto) 
      { 
       // CODE TO GET AUTO GRADE 
       return 0.0; 
      } 
      else 
      { // RETURN MANUALLY SET GRADE 
       return _Grade; 
      } 
     } 

    } 

    // CTOR 
    public MainWindowViewModel() 
    { 
     IsAuto = false; 
    } 
+0

但如果它被設置爲自動,我還是要能夠改變這個值。所以在我的例子中,我有4個問題,最高分爲20分。我填寫了這個,系統給出默認的文本框自動,所以每個問題在5分。但是,如果我決定我想將1個問題改爲8分。所以我在8中用「auto」改變了文本框,所以其他問題每個都在3分上。我有一個列表視圖,如果我選擇一個我可以改變細節(這裏的檔次)。 – Ruben 2011-04-08 11:50:56

+0

是的,這是不一樣的,我會重申你的問題,因爲它沒有像這樣的評論。 – 2011-04-08 12:00:38