Windows 10上下文菜单中的适当滑块

时间:2018-07-13 15:07:04

标签: c# wpf slider contextmenu notifyicon

我使用这个NotifyIcon Nuget。并创建了一个包含一些不同元素的上下文菜单。 (MenuItem, TextBox, Separator, TextBlock, Grid, Slider

在Windows 7中,每件事都显示出我想要的样子。 (带有HorizontalAlignment="Stretch"的TextBox会使用所有可用的空间,Slider也会使用,Grid的伸展也会增加)

但是在Windows 10中,它不会伸缩。如果我键入需要更多空间的文本,则文本框会展开,这样就可以了。但是滑块只有1px长,因此您可以将其设置为ON / OFF(而不是0到255)。并且Grid看起来很丑。

Win 7 picture Win 10 picture

这是我的代码:

<Window x:Class="ContextMenu.MainWindow"
        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:tb="http://www.hardcodet.net/taskbar"
        xmlns:local="clr-namespace:ContextMenu"
        mc:Ignorable="d"
        Title="MainWindow" Height="1" Width="100"
        AllowsTransparency="True" WindowStyle="None" Background="Black"
        Top="0" 
        Left="0" 
        Topmost="True" ShowInTaskbar="False">
    <Grid>
        <tb:TaskbarIcon x:Name="MyNotifyIcon"
                        IconSource="/Icons/Ninja.ico"
                        ToolTipText="Overlay">
            <tb:TaskbarIcon.ContextMenu>
                <ContextMenu>
                    <MenuItem x:Name="CheckPing" IsCheckable="True" Header="Ping"></MenuItem>
                    <TextBox x:Name="TextPing" Text="8.8.8.8" HorizontalAlignment="Stretch"/>
                    <Separator/>
                    <TextBlock Text="Set the Position"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                        </Grid.ColumnDefinitions>
                        <TextBox x:Name="WindowTop" HorizontalAlignment="Stretch" Text="0"></TextBox>
                        <TextBox x:Name="WindowLeft" HorizontalAlignment="Stretch" Grid.Column="1" Text="0"></TextBox>
                    </Grid>
                    <TextBlock Text="Set the Opacity"/>
                    <Slider x:Name="SliderOpacity" Minimum="0" Maximum="255" HorizontalAlignment="Stretch"></Slider>
                    <TextBlock Text="Set the Fontsize"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="10"></TextBlock>
                        <Button Grid.Column="1" Content="+"></Button>
                        <Button Grid.Column="2" Content="-"></Button>
                    </Grid>
                    <MenuItem Header="Exit"></MenuItem>
                </ContextMenu>
            </tb:TaskbarIcon.ContextMenu>
        </tb:TaskbarIcon>
        <StackPanel x:Name="VerticalStackLong">
            <StackPanel x:Name="HorizontalStack" Orientation="Horizontal">
                <StackPanel x:Name="MainGrid"></StackPanel>
            </StackPanel>
        </StackPanel>
    </Grid>
</Window>

1 个答案:

答案 0 :(得分:0)

我的解决方案是只设置“ MinWidth”。

例如:

<Slider x:Name="SliderOpacity" Minimum="0" Maximum="255" HorizontalAlignment="Stretch" MinWidth="80"></Slider>

直到现在我还没有找到更好的解决方案。