WPF: привязка настраиваемого списка и списка <T>: PropertyChanged всегда равен нулю - PullRequest
0 голосов
/ 21 января 2010

Я настроил ListBox, объявленный в XAML:

<ListBox x:Name="uicMDSQonfServer">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal"
                  Margin="0,5,0,5">
        <CheckBox IsChecked="{Binding RelativeSource={TemplatedParent},
                                      Path=Activated}" />
        <ContentPresenter Content="{Binding RelativeSource={TemplatedParent},
                                    Path=Content}"/>
      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

Мне нужно dsiplay и взаимодействовать с универсальным списком, где T это:

public class QonfServer: QonfBase, INotifyPropertyChanged
{
        private string ip;
        private bool activated;

        public string Ip {
            get { return ip; }
        }

        public bool Activated
        {
            get { return activated; }
            set
            {
                if (activated == value)
                    return;

                activated = value;
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs("Activated"));
            }
        }

        #region INotifyPropertyChanged Members
        public event PropertyChangedEventHandler PropertyChanged;
        #endregion
    }

QonfBase - довольно простой Базовый класс:

public class QonfBase
{
        private int id;
        public  int ID { get; set; }
}

Когда я включаю свойство Activated программным способом, флажок не изменяет состояние. Отладка: PropertyChanged = ноль. Кто-нибудь знает, что не так?

1 Ответ

1 голос
/ 21 января 2010

На глаза бросается одна очевидная проблема: TemplatedParent предназначен для использования с ControlTemplate с. Поскольку вы используете DataTemplate, это должно работать:

<CheckBox IsChecked="{Binding Activated}" /> 
<ContentPresenter Content="{Binding Content}"/> 

Я не заметил никаких проблем с C #.

...