当我尝试单击 WPF 中的元素时,Сombobox 关闭

Сombobox closes when I try to click on the elements inside WPF

当我尝试移动滑块时组合框关闭。 我尝试了不同的方法但没有任何帮助,特别是将所有内容放入 ToggleButton

<ComboBox HorizontalAlignment="Right" Background="Transparent" BorderBrush="Transparent" Width="20" Height="20" Style="{DynamicResource ComboBoxForSound}">
                            <ComboBoxItem  Background="Transparent" Style="{DynamicResource ComboBoxItemStyle1}">
                                <Grid Width="208" Height="108">
                                    <Border CornerRadius="22" BorderThickness="1" BorderBrush="Black">
                                        <Border.Background>
                                            <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                                                <GradientStop Color="#2d2d2e" Offset="0" />
                                                <GradientStop Color="#151517" Offset="1" />
                                            </LinearGradientBrush>
                                        </Border.Background>
                                    </Border>
                                    <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Margin="28,20,0,0" Height="64" Width="150">
                                        <TextBlock Text="Громкость" FontSize="14" Foreground="Orange" FontFamily="{DynamicResource MontserratAlternates}" Margin="5,0,0,0" />
                                        <Slider Margin="0,14,0,0" Name="SoundSlider" TickFrequency="1" IsSelectionRangeEnabled="True" Minimum="0" Maximum="9" SelectionStart="0" Width="150" HorizontalAlignment="Center" VerticalAlignment="Center" Style="{StaticResource SliderStyle1}" ValueChanged="Slider_ValueChanged_1" />
                                    </StackPanel>
                                </Grid>
                            </ComboBoxItem>
                        </ComboBox>
  1. 您的 ComboBox 中是否只有一项? selected 后 ComboBox 的内置行为是折叠。 选择一个元素是焦点的转移,包括转移到它的任何子元素。 一旦您单击 Slider,它就会获得焦点,该项目将被 select 编辑并且组合框会折叠。

  2. 总的来说,看起来像是在胡说八道,完整。 ComboBox 用于 selecting 您甚至没有的项目列表中的项目。 如果您只需要隐藏-显示一组元素,请使用 Expander。

  3. 如果您需要不同的东西,请正常详细地解释您想要实现的内容。

答案由问题中的其他详细信息的解释补充:

I'm trying to make a context menu where I can move the slider and so that it doesn't close, the expander doesn't fit because I don't need to move the elements of my window, but open on top of it

在 WPF 中,元素根据其行为逻辑 selected。它们的视觉外观由样式 and/or 模板设置。
ComboBox 行为:当您单击它时,展开列表,当您单击列表中的项目时,select 它并折叠列表。

你需要这种行为吗?
不是。
因此,您不需要 ComboBox。

根据您的描述,您很可能需要 ToggleButton 和 Popup 的组合。

一个简单的例子:

<Window x:Class="SliderInPopup.SliderInPopupWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:SliderInPopup"
        mc:Ignorable="d"
        Title="SliderInPopupWindow" Height="450" Width="800">
    <Grid>
        <ToggleButton x:Name="toggleButton" VerticalAlignment="Top" HorizontalAlignment="Left" Content="Click Me"/>
        <Popup x:Name="popup1" StaysOpen="False"
               Placement="Mouse" AllowsTransparency="True"
               IsOpen="{Binding IsChecked, ElementName=toggleButton}"  >
            <Grid Width="208" Height="108">
                <Border CornerRadius="22" BorderThickness="1" BorderBrush="Black">
                    <Border.Background>
                        <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                            <GradientStop Color="#2d2d2e" Offset="0" />
                            <GradientStop Color="#151517" Offset="1" />
                        </LinearGradientBrush>
                    </Border.Background>
                </Border>
                <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Margin="28,20,0,0" Height="64" Width="150">
                    <TextBlock Text="Громкость" FontSize="14" Foreground="Orange" Margin="5,0,0,0" />
                    <Slider Margin="0,14,0,0" Name="SoundSlider" TickFrequency="1" IsSelectionRangeEnabled="True" Minimum="0" Maximum="9" SelectionStart="0" Width="150" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </StackPanel>
            </Grid>
        </Popup>
    </Grid>
</Window>