2013-01-18 2 views
2

У меня есть простой Datagrid, привязанный к ObservableCollection из ViewModel. Этот ObservableCollection состоит из пользовательского типа, например ObservableCollection.WPF datagrid binding complex type свойство назад

Тип ComplexType имеет только 2 свойства, и только одно редактируется на экране. Другой - тип bool, который зависит от первого.

Когда я редактирую первое свойство, , оно получает отражение в ComplexType, а также меняет второе свойство. Но второе свойство не изменяется на экране.

Как обновить второе свойство на экране?

+0

Вы используете двухстороннюю привязку данных в вашей XAML на второе свойство? Вы увеличиваете событие PropertyChanged при редактировании первого свойства? Будет хорошо видеть некоторый ваш код. – acrilige

+0

Вы должны опубликовать некоторый код, чтобы узнать о вашей привязке и свойствах –

ответ

3

Попробуйте это:

public class ComplexType:INotifyPropertyChanged 
{ 
    private object someProperty1; 
    public object SomeProperty1 
    { 
     get{return someProperty1;} 
     set 
     { 
      someProperty1=value; 
      SomeProperty2=somefunc(someProperty1); 

      If(PropertyChanged!=null){PropertyChanged(this, new PropertyChangedEventArgs(SomeProperty1));} 
     } 
    } 

    private object someProperty2; 
    public object SomeProperty2 
    { 
     get{return someProperty2;} 
     set 
     {  
     someProperty2=value; 

     If(PropertyChanged!=null){PropertyChanged(this, new PropertyChangedEventArgs(SomeProperty2));} 
     } 

    public event PropertyChangedEventHandler PropertyChanged; 
} 
2

Наблюдаемая коллекция предоставляет уведомление только тогда, когда предметы добавляются, удаляются или вся коллекция обновляется. Вы должны убедиться, что каждое свойство либо вызывает событие PropertyChanged, либо свойство зависимостей, если вы хотите, чтобы ваш пользовательский интерфейс обновлялся при его изменении.

Смежные вопросы