2011-01-14 7 views
1

私はオブジェクトをバインドするSilverlightページを持っています。silverlight 4 comboxバインドしないC#

最初にページを読み込むと、すべてのコンボボックスが塗りつぶされ、正しい選択項目が表示されます。 ページを更新すると、コンボボックスにアイテムが残っていますが、選択した値はバインドされません。

SelectedValue="{Binding WriterID,Mode=TwoWay}" 
Article.DataContext = ActiveArticle 

Updateを使用してバウンド

:それは私が制御する理由 任意のアイデアのDataContextのを変更したときにデータバインディングを失っているように見える ?

+0

データコンテキストを変更するときにバインディングを失うことは、既知の問題です。残念なことに私は手渡されることはありません。 – ChrisF

+0

これをAanswerとして入力すると、私は受け入れます:) – Steven

答えて

3

私のコメントに示されているように、これは既知の問題です。私が探していた参照を見つけることができませんでしたが、これが見つかりましたbug report on Microsoft Connect

解決策は、選択が変更されたときにバインディング式をリセットすることです。レポート内のコードはサブクラス化されたComboBoxで行いますが、アプリケーションのComboBoxをオーバーライドできない場合は、ビュークラスで行うことができます。

public class XComboBox : ComboBox 
{ 
    private BindingExpression bE; 
    public XComboBox() 
    { 
     this.SelectionChanged += new SelectionChangedEventHandler(XComboBox_SelectionChanged); 
    } 

    void XComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (bE==null) 
     { 
     bE = this.GetBindingExpression(ComboBox.SelectedValueProperty); 
     } 
     else 
     { 
      if (this.GetBindingExpression(ComboBox.SelectedValueProperty) == null) 
      { 
      this.SetBinding(ComboBox.SelectedValueProperty, bE.ParentBinding);  
      } 
     } 
    } 
} 
関連する問題