текст по умолчанию в текстовом поле wpf - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть TextBox, его свойство Text связано со свойством типа double с именем Grade. У меня также есть CheckBox, когда отмечен CheckBox, я хочу, чтобы Grade принял автоматически рассчитанное значение (то есть автоматически установил MaxScore / Количество вопросов). Если CheckBox не отмечен, тогда я хочу установить и изменить Grade Вручную. У меня вопрос как я могу это реализовать?

<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;
                    }
                }
            }
        }

Спасибо

Ответы [ 2 ]

0 голосов
/ 08 апреля 2011
    <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>

А для модели View

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 голосов
/ 08 апреля 2011

в вашей виртуальной машине, используйте другое общедоступное свойство Auto и убедитесь, что ваш флажок привязан к нему, как и ваш TextBox (так что он становится доступным только для чтения / отключен / скрыт).И моя автоматическая проверка по умолчанию будет истинной

...