2017-06-06 16 views
0

すべての列にヘッダーとしてコンボボックスがあるデータグリッドがあります。各コンボボックスのソースは、観測可能な文字列の集合にバインドされています。私は設計時にデータグリッドの列の数が不明であるため、このすべてをコードで作成しました。WPF:ItemContainerGenerator.Status =開始されていません

ユーザーが項目を選択すると、各コンボボックスで、項目が変更された後でその項目を無効にする必要があります。だから私はこのようなループをしようとしました:

問題は、列のループが2番目の反復に達すると、私のコードは例外を発生させることです。私のローカル変数を詳しく見てみると、ItemContainerGenerator.Statusは、最初の列のコンボボックスを除いてNotStartedであることがわかりました。この問題を解決する方法について私に助力を提供できますか?

答えて

0

解決策が見つかったようです。私は、内側のループ内のコードのこの部分を追加するために必要な:

if(dg.ItemContainerGenerator.Status == GeneratorStatus.NotStarted) 
{ 
    dg.IsDropDownOpen = true; 
    this.UpdateLayout(); 
    dg.IsDropDownOpen = false; 
} 

問題がおきComboBoxItemが生成されなくなるまでItemContainerGeneratorが生成されていないということだったようです。これを行うには、各ComboBoxが少なくとも1回開かれたと考えるためにUIを騙すべきです。

ご質問がある場合は、私にお知らせください。

関連する問題