2

この問題について Web にはさまざまな投稿があり、ComboBox は最初のドロップダウンの項目に合わせてドロップダウンの高さのみを変更します。表示される項目を変更しても、ドロップダウンのサイズは変更されません。私が見つけたさまざまな回避策は私にはうまくいかないようなので、誰かがこれを解決する方法を見つけたのではないかと思っていました.

私の現在のオプションは、MinHeight を使用して適切なサイズに設定することです (MinHeight と MaxHeight を設定すると、Height を設定した場合と同じ問題が発生します。項目が境界の外に出たときにスクロールバーが表示されません。

アイテムのコンテナを変更しようとしましたが、すべてこの問題があるようです。何か案は?

いくつかのフォーラムで示されているように、ItemsSource を変更するたびにプログラムでコンボを再作成しようとしましたが、クラッシュせずにこれを機能させることはできません。

4

2 に答える 2

2

'addandremove'メソッドは私のために機能します。これが私がすることです(あなたが少し違うことをしている場合、または他の誰かがこの方法を試したい場合):


  • 興味のあるすべてのプロパティをローカルで読んで保存します
  • ビジュアルツリーからコンボボックスを削除します
  • 変数をnullに設定します
  • 新しいコンボボックスを作成する
  • 上に保存したプロパティを復元します
  • あなたが最初に考えた数を取り除いてください
  • ビジュアルツリーに追加し直します

例えば:

string lName = lComboBox.Name;
DataTemplate lTemplate = lComboBox.ItemTemplate;
Thickness lMargin = lComboBox.Margin;
// Other properties

LayoutParent.Children.Remove(lComboBox);

lComboBox= null;
lComboBox= new ComboBox(){
    Name = lName,
    ItemTemplate = lTemplate,
    Margin = lMargin,
    ItemsSource = lList // Your datasource
};

LayoutParent.Children.Add(lComboBox);
于 2009-02-05T15:12:59.843 に答える
1

この回答のおかげで素晴らしい解決策を見つけました。それはうまく機能し、他の提案ほどハックではありません(効果的です)。

明らかに、それは私の答えではないので、コミュニティはこの投稿をウィキ化しています。本当の答えに投票してください。marktiはこの 1 つで 2 倍の評価を受けるに値します。

于 2009-07-10T13:47:27.580 に答える