2012-05-06 4 views
0

У меня есть редактируемый ComboBox для отображения всех таблиц и базы данных SQL.Редактируемый WPF ComboBox не запускает PropertyChanged

<ComboBox Grid.Column="1" 
         Grid.Row="2" 
         Height="23" 
         Margin="3,3,3,3" Name="cbLogTable" VerticalAlignment="Top" 
         ItemsSource="{Binding}" 
         TextSearch.TextPath="TABLE_NAME" 
         SelectedValue="{Binding Path=LogTable, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, ValidatesOnDataErrors=True}" 
         > 
       <ComboBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="{Binding Path=TABLE_NAME}"/> 
         </StackPanel> 

        </DataTemplate> 
       </ComboBox.ItemTemplate> 
      </ComboBox> 

Свойство вмещающего UserControl выглядит следующим образом, а также реализует INotifyPropertyChanged:

public string LogTable 
    { 
     get 
     { 
      return _logTable; 
     } 
     set 
     { 
      if (_logTable == value) return; 
      _logTable = value; 
      OnPropertyChanged("LogTable"); 
     } 
    } 

Я использую связывании следующие данные для заполнения ComboBox:

private void UpdateLogTable() 
    { 
     var connection = new SqlConnection(_connectionString); 
     connection.Open(); 
     DataTable t = connection.GetSchema("Tables"); 
     cbLogTable.DataContext = t; 
     connection.Close(); 
    } 

Но я не 't получать уведомление PropertyChanged об изменении выбранного значения ComboBox. Где моя вина?

+0

Вы уверены, что ваш 'LogTable' является свойством зависимостей? (Помимо этого: 'SqlConnection' в потоке пользовательского интерфейса?) – Vlad

+0

где вы пытаетесь захватить событие propertychanged? –

ответ

2

В связывании SelectedValue:

SelectedValue="{Binding Path=LogTable, 
         UpdateSourceTrigger=PropertyChanged, 
         Mode=TwoWay, 
         ValidatesOnDataErrors=True, 
         RelativeSource={RelativeSource FindAncestor, 
             AncestorType={x:Type UserControl}}}" 

В противном случае, связывание ищет LogTable собственности на DataTable типа (который является DataContext для Combobox), и не тихо.

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