【问题标题】:How keep drop down opened in silverlights ComboBox?如何在silverlights ComboBox中保持下拉打开?
【发布时间】:2010-09-23 14:32:36
【问题描述】:

我使用 ComboBox 控件作为弹出窗口。我的 ComboBox 的项目是网格。网格中有 TreeView 控件和两个按钮。 TreeView 的项目是复选框。
当我单击按钮或复选框时,下拉菜单保持打开状态,但是当我单击网格下拉菜单的其他部分时,我关闭了。
有没有办法让它保持打开状态,直到我在 ComboBox 之外单击?
我在谷歌上看了很多,但没有找到任何东西。

<UserControl.Resources>        
    <common:HierarchicalDataTemplate x:Key="HierarchicalDataTemplate_AddDivision"  ItemsSource="{Binding DivisionIDs}">
        <StackPanel Orientation="Horizontal">
            <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}" Click="CheckBox_Click" />
            <TextBlock Text="{Binding ToDisplay}"/>
        </StackPanel>
    </common:HierarchicalDataTemplate>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.5*"/>
        <ColumnDefinition Width="0.5*"/>
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="0.90*"/>
        <RowDefinition Height="0.10*"/>
    </Grid.RowDefinitions>
    <controls:TreeView Height="250" x:Name="itemsToShow" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="230" 
                       Grid.ColumnSpan="2"  ItemTemplate="{StaticResource HierarchicalDataTemplate_AddDivision}" SelectedItemChanged="itemsToShow_SelectedItemChanged" />
    <Button Margin="28,0,22,5" Content="Ok" Grid.Row="1" d:LayoutOverrides="Height" Click="OkButton_Click"/>
    <Button Margin="23,0,27,5" Content="Cancel" Grid.Column="1" Grid.Row="1" d:LayoutOverrides="Height" Click="CancelButton_Click"/>  
</Grid>   

这是组合框

<ComboBox Grid.Row="1" Width="100" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top"  >
   <ComboBox.ItemTemplate>
      <DataTemplate>
       <my1:ShowDivisions x:Name="ShowDivs" Loaded="ShowDivs_Loaded" ParentComboBox="{Binding ElementName=addStr2}"/>                                            
      </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>

【问题讨论】:

    标签: silverlight silverlight-3.0 custom-controls silverlight-toolkit


    【解决方案1】:

    听起来你的按钮没有填满组合框下拉部分的所有空间。

    在这种情况下,您只需要在按钮后面有一个可点击的对象即可吃掉任何杂散的鼠标点击:

    尝试将背景设置为透明的矩形(不仅仅是具有 0 alpha 值的颜色,因为它不可点击)。

    (确保矩形也设置了 IsHittestVisible)。

    【讨论】:

    • 谢谢您的回答。我试过边境管制,但没用。我会试试你的版本。
    • @Samvel Siradeghyan:如果您有任何问题,请为您的 ComboxBox 发布 Xaml。然后我可以对其进行测试并发布修复。
    • 我已经尝试过你所说的@HiTech Magic 并得到相同的结果。我也会发布 XAML。
    • 我忘了说我创建了用户控件并将其设置为组合模板
    • @Samvel Siradeghyan:您尝试在哪里插入矩形或其他背景对象?您需要编辑组合框本身的模板才能做到这一点。理论上,您可以将它们添加到每个项目中,但矩形需要具有固定宽度(不是最佳选择)。更改组合框模板(最好使用 Expression Blend)。
    猜你喜欢
    • 2023-03-31
    • 2018-02-22
    • 2022-08-15
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2014-07-04
    相关资源
    最近更新 更多