如何在Silverlight ComboBox中打开下拉列表?

时间:2010-09-23 14:32:37

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

我使用ComboBox控件作为弹出窗口。我的ComboBox的项目是Grid。网格中有TreeView控件和两个按钮。 TreeView的项目是CheckBoxes 当我点击按钮或CheckBoxes下拉保持打开,但当我点击网格的其他部分下拉我关闭。
有没有办法让它保持打开,直到我点击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

<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>

1 个答案:

答案 0 :(得分:1)

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

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

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

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