C# 正在向上扩展silverlight组合框控件?
有没有办法在silverlight中将combobox控件的扩展方向改为上部而不是下部C# 正在向上扩展silverlight组合框控件?,c#,.net,silverlight,combobox,C#,.net,Silverlight,Combobox,有没有办法在silverlight中将combobox控件的扩展方向改为上部而不是下部 我的意思是,youtube的视频质量组合框是从下到上打开的(选择240p、340p等的组合框)。。如果我将组合框放在布局的底部,默认情况下是向上打开的,但是有没有办法在其他地方实现这一点?您需要使用附加的行为,因为组合框的Silverlight弹出控件没有Placement属性。以下是此类行为的一个例子: 然后,您所要做的就是应用样式,将行为附加到弹出窗口: <Style x:Key="ComboBox
我的意思是,youtube的视频质量组合框是从下到上打开的(选择240p、340p等的组合框)。。如果我将组合框放在布局的底部,默认情况下是向上打开的,但是有没有办法在其他地方实现这一点?您需要使用附加的行为,因为组合框的Silverlight弹出控件没有Placement属性。以下是此类行为的一个例子: 然后,您所要做的就是应用样式,将行为附加到弹出窗口:
<Style x:Key="ComboBoxStyle1" TargetType="ComboBox">
... snip ...
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<Grid>
... snip ...
<!-- Attach behaviour here! -->
<Popup x:Name="Popup">
<Border x:Name="PopupBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="3" HorizontalAlignment="Stretch" Height="Auto">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFFFF" Offset="0"/>
<GradientStop Color="#FFFEFEFE" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<ScrollViewer x:Name="ScrollViewer" BorderThickness="0" Padding="1">
<ItemsPresenter/>
</ScrollViewer>
</Border>
</Popup>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
... 剪
... 剪
谢谢您的帮助!!它确实给了我洞察力,你给我的链接非常棒,但我无法实现向上扩展的弹出窗口。我在链接和您的代码中实现了它,但无法实现。另外,我有点怀疑,如果combobox中有1个以上的项目,弹出窗口是否会扩展到实际的combobox控件本身。你可以根据combobox的高度来计算偏移量,所以我不会担心这个部分。实际上,我正试着避开那个部分,并寻找一个黑客,但就可读性和未来使用而言,实现我自己的附加行为似乎是一个更好的选择。我想我会的,谢谢你的帮助,克劳斯!