Обновить текстовые поля для выбранного списка элементов - PullRequest
0 голосов
/ 28 марта 2011

еще один маленький вопрос.У меня есть список с объектами.Затем у меня есть несколько текстовых полей с некоторыми свойствами выбранного элемента в списке, и я должен их отредактировать. Но мой вопрос: когда я выбираю элемент, и я заполняю текстовые поля некоторым текстом.Он сохраняет его, но затем, если я нажимаю на другой элемент, все, что я заполнил, остается в текстовых полях, как мне решить эту проблему?

это пример текстового поля: поэтому я хочу установитьmaxtime моего объекта ... текстовое поле становится видимым, когда я нажимаю на что-то в списке.

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

это мой список:

<ListBox SelectedItem="{Binding Path=SelectedQuestionDropList, UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" 
     DisplayMemberPath="Description"
      dd:DragDrop.IsDragSource="True" 
      dd:DragDrop.IsDropTarget="True" Margin="0,201,0,204" Background="#CDC5CBC5"
                     dd:DragDrop.DropHandler="{Binding}"  />

это в моей модели просмотра:

public int MaxTime
        {
            get { return maxTime; }
            set { maxTime = value;
            OnPropertyChanged("MaxTime");
            this.examQuestion.MaxTime = value;

            }
        }

Ответы [ 2 ]

0 голосов
/ 28 марта 2011

Возможно, вам нужно изменить свойство UpdateSourceTrigger для Text вашего TextBox и установить его на LostFocus вместо PropertyChanged.

<TextBox Height="23" Visibility="{Binding Path=Visible, Converter={StaticResource boolToVis},UpdateSourceTrigger=PropertyChanged}" Text="{Binding Path=MaxTime,UpdateSourceTrigger=LostFocus,Mode=TwoWay}" HorizontalAlignment="Left" Margin="376,322,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" />

См .: UpdateSourceTrigger на MSDN .

0 голосов
/ 28 марта 2011

вы должны обновлять свойство MaxTime каждый раз, когда выбираете элемент в списке. в противном случае значение Textbox.Text не будет обновляться при выборе элементов в списке.

EDIT: Есть много способов сделать это :) Ваш список выбранных элементов привязан к SelectedQuestionDropList. так что просто добавьте

OnPropertyChanged("MaxTime"); 

к сеттеру. это решение приводит к тому, что ваше свойство MaxTime находится в том же классе, что и ваш SelectedQuestionDropList. Другой простой способ - использовать событие SelectionChanged из вашего списка и вызвать метод (например, NotifyAll ()) для вашего класса со свойством MaxTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...