2012-05-06 13 views
0

すべてのテーブルとSQLデータベースを表示するには編集できないComboBoxがあります。編集可能な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> 

含むユーザーコントロールのプロパティは、このようになりますし、また、INotifyPropertyChangedのを実装します。

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

私はコンボボックスを埋めるために結合後のデータを使用します。

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

しかし、私はドンComboBoxの選択された値を変更するためのPropertyChanged通知を受け取りません。私の欠点はどこですか? SelectedValueの結合に

+0

あなたの 'LogTable'は本当に依存関係プロパティですか? (それ以外の:UIスレッドの 'SqlConnection'?) – Vlad

+0

ここで、あなたはpropertychangedイベントをトラップしようとしていますか? –

答えて

2

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

そうでない場合、結合は、(コンボボックスのためのDataContextである)DataTable種類LogTableプロパティを探して、そして静かに失敗します。

関連する問題