gpt4 book ai didi

wpf - 强制 ComboBox 在 Silverlight 中打开?

转载 作者:行者123 更新时间:2023-12-04 12:43:08 33 4
gpt4 key购买 nike

我在 Silverlight 中有一个行为非常不一致的 ComboBox。

我将 ComboBox 绑定(bind)到添加或删除元素的动态数据集合。这是组合框的 XAML:

<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 会打开 ItemsContained 中的一长串项目。但是,如果我删除 ItemsContained 中的一个项目,当你单击它时,组合框会突然从打开“向上”切换到打开“向下”,尽管事实上这个集合中有很多项目并且那里只有 20 像素左右的空间供它向下打开。我无法弄清楚这一点。我什至尝试将 ItemsPanelTemplate 设置为 MinHeight,但这无济于事。有谁知道如何让 ComboBox 总是“打开”?

此外,即使我将 MinHeight 设置为荒谬的值,例如 10,000,它仍然会这样做。

编辑:作为更新,我通过在每次更改 ItemsContained 时创建一个全新的 ComboBox 来实现这一点。这是代码:
scrollingGrid.Children.Remove(tabComboBox);
tabComboBox.ItemsSource = null;
ComboBox boxy = new ComboBox()
{
ItemsSource = ItemsContained
};
scrollingGrid.Children.Add(boxy);
tabComboBox = boxy;

我觉得这有点临时,所以如果有人有更好的主意,请告诉我。更改 ComboBox 内 ScrollViewer 的高度也不起作用。

最佳答案

我认为这是一个 Silverlight 错误。当您设置 ItemsSource 属性时,组合框弹出窗口的行为会从上变为下。

我在每个组合框的 DropDownClosed 事件中克隆我的组合框,这对我有用。

 Private Sub cbRow1_DropDownClosed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbRow1.DropDownClosed, cbRow2.DropDownClosed, cbRow3.DropDownClosed, cbRow4.DropDownClosed, cbRow5.DropDownClosed
Dim co As ComboBox = CType(sender, ComboBox)
CloneComboBox(co)
End Sub

Private Sub CloneComboBox(ByVal co As ComboBox)
Dim cbClon = New ComboBox()
cbClon.Margin = co.Margin
cbClon.Width = co.Width
cbClon.Height = co.Height
cbClon.Name = co.Name
cbClon.Tag = co.Tag

cbClon.ItemsSource = co.ItemsSource
cbClon.SelectedIndex = co.SelectedIndex

LayoutRoot.Children.Remove(co)
LayoutRoot.Children.Add(cbClon)

//this is because I have my comboboxes inside a grid
System.Windows.Controls.Grid.SetRow(cbClon, cbClon.Tag)
System.Windows.Controls.Grid.SetColumn(cbClon, 0)


AddHandler cbClon.DropDownClosed, AddressOf cbRow1_DropDownClosed

End Sub

关于wpf - 强制 ComboBox 在 Silverlight 中打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036436/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com