Заставить ComboBox открываться в Silverlight?

У меня есть ComboBox в Silverlight, который ведет себя очень непоследовательно.

У меня ComboBox привязан к динамической коллекции данных, в которую добавляются или удаляются элементы. Вот XAML для ComboBox:

<ComboBox Margin="0,-1,0,0" Width="20" Grid.Row="0" Grid.Column="0" ItemsSource="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ItemsContained}" x:Name="TabComboBox" >
    <ComboBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Background="White" MinWidth="250" />
        </ItemsPanelTemplate>
    </ComboBox.ItemsPanel>
</ComboBox>

Так что это отлично работает, и ComboBox открывается «вверх» с длинным списком элементов в ItemsConhibited. Однако, если я удалю один из элементов в ItemsConhibited, ComboBox внезапно переключится с открытия «вверх» на открытие «вниз» при нажатии на него, несмотря на то, что в этой коллекции много предметов, и есть только 20 пикселей или около того, чтобы она открылась. Я не могу понять этого. Я даже попытался установить для ItemsPanelTemplate значение MinHeight, но это не помогло. Кто-нибудь знает, как сделать так, чтобы ComboBox всегда открывался «вверх»?

Кроме того, даже если я установил для MinHeight что-то нелепое, например 10 000, он все равно сделает это.

РЕДАКТИРОВАТЬ: В качестве обновления я заставил это работать, создавая полностью новый ComboBox каждый раз, когда ItemsConhibited изменяется. Это код:

scrollingGrid.Children.Remove(tabComboBox);
tabComboBox.ItemsSource = null;
ComboBox boxy = new ComboBox()
{
    ItemsSource = ItemsContained
};
scrollingGrid.Children.Add(boxy);
tabComboBox = boxy;

Я считаю, что это немного от случая к случаю, поэтому, если у кого-то есть идея получше, дайте мне знать. Изменение высоты ScrollViewer внутри ComboBox также не работает.

7
задан TheEnigmaMachine 18 May 2011 в 15:26
поделиться