禁用滑块值的关闭图标

时间:2014-11-17 15:34:05

标签: wpf xaml

我想在滑块的值上禁用关闭图标。假设滑块具有正值,则禁用关闭功能(红色X图标)。如果没有则启用它。

我认为在代码中设置WindowStyle

C#代码:

 public WindowStyle WindowStyle { get; set; }
 private void SliderValueChanged(object sender,
    RoutedPropertyChangedEventArgs<double> e)
    {
        double value = slider.Value;
        if (value > 0.0)
          this.WindowStyle = WindowStyle.None;
        else
            this.WindowStyle = WindowStyle.SingleBorderWindow;
    }

XAML代码:

<Window x:Class="TestAsync.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     Closing="MainWindow_Closing"
    Title="MainWindow" Height="350" Width="525" WindowStyle="SingleBorderWindow">
<Grid>
    <Button Content="Start" HorizontalAlignment="Left" Margin="205,245,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
    <Slider Maximum="5000" TickPlacement="BottomRight" TickFrequency="100" IsSnapToTickEnabled="True" Name="slider" Margin="10,30,10,0" Height="30" ValueChanged="SliderValueChanged" />
</Grid>
</Window>

但它不起作用。还有一个警告:

  

&#39; TestAsync.MainWindow.WindowStyle&#39;隐藏继承成员&#39; System.Windows.Window.WindowStyle&#39;。如果想要隐藏,请使用new关键字。

1 个答案:

答案 0 :(得分:0)

这里有两个问题:首先你已经声明了自己的WindowStyle属性,这个属性应该从Window继承。其次,您的Slider应该将一些Minimum设置为负值,以便用户可以将其滑动到某个负值。否则,他所能做的只是在0和最大值之间的范围内滑动:

//remove this
//public WindowStyle WindowStyle { get; set; }

并为滑块添加一些否定的Minimum

<Slider Maximum="5000" TickPlacement="BottomRight" TickFrequency="100" 
        IsSnapToTickEnabled="True" Name="slider" Margin="10,30,10,0" Height="30" 
        ValueChanged="SliderValueChanged" Minimum="-100"/>

现在应该可以了。