Skip to main content
 首页 » 编程设计

c#之slider 大小变化

2024年08月06日29me-sa

我遇到了 WinRT 项目中 slider 大小的问题。我的 xaml 中有简单的默认 slider ,如下所示:

        <Slider x:Name="slider1"  
            HorizontalAlignment="Stretch" 
            VerticalAlignment="Top" 
            BorderBrush="White"  
            BorderThickness="5"/> 

这个 slider 在整个页面上都有宽度,当这个页面改变它的大小时, slider 也必须改变他的大小。但这就是问题所在。如果我将 slider 的值设置为最大值并将应用程序窗口拖动到纵向状态, slider 的大小不会在 View 中改变。它只有在操作后才会变成实际大小。我已经尝试监视数据,当触发 SizeChanged 事件并且 slider 采用正确的 NewSize 时,但不会更改其 View 。 在下面的屏幕上,您可以看到我在说什么。 Slider 的 body 以纵向状态(或任何其他状态)从窗口中出来。

那么这是默认控件的错误吗?我该如何解决这个问题?

请您参考如下方法:

我想出了一些解决方法来解决这个问题,但解决方案非常难看。

private void Slider1_OnSizeChanged(object sender, SizeChangedEventArgs e) 
{ 
    var value = this.slider1.Value; 
    this.slider1.Value = 0; 
 
    this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => 
    { 
        this.slider1.Value = value; 
    }); 
} 

如果有人想出更好的办法,请告诉我。