Xamarin.forms Slider ThumImage 隐藏在最大值

Posted

技术标签:

【中文标题】Xamarin.forms Slider ThumImage 隐藏在最大值【英文标题】:Xamarin.forms Slider ThumImage hides on Maximum value 【发布时间】:2020-02-08 03:46:37 【问题描述】:

我正在使用滑块控件并将三角形设置为拇指图像。在极左值或最小值上,图像正确显示。但是在将其拖动到最大值时,它会隐藏在最大值上。 <Slider.ThumbImageSource> <OnPlatform x:TypeArguments="FileImageSource"> <On Platform="UWP" Value="Assets/Images/Triangle.png"/> </OnPlatform> </Slider.ThumbImageSource>

【问题讨论】:

【参考方案1】:

在 Xamarin.uwp 中将此滑块控件与 Thumb Image 一起使用时,没有水平限制。但是,原始拇指效果很好。

您可以创建一个自定义控件来使用original Thumb style 来覆盖Thumb Image style

更改:

<Thumb x:Name="HorizontalThumb"
              Background="ThemeResource SystemControlForegroundAccentBrush"
              Style="StaticResource SliderThumbStyle"
              DataContext="TemplateBinding Value"
              Height="24"
              Width="8"
              Grid.Row="0"
              Grid.RowSpan="3"
              Grid.Column="1"
              AutomationProperties.AccessibilityView="Raw" />
                            <Thumb x:Name="HorizontalImageThumb"
                                    Visibility="Collapsed"
                                    Background="ThemeResource SystemControlForegroundAccentBrush"
                                    Style="StaticResource SliderThumbImageStyle"
                                    DataContext="TemplateBinding Value"
                                    Tag="Binding ThumbImageSource, RelativeSource=RelativeSource TemplatedParent"
                                    Height="24"
                                    Width="24"
                                    Grid.Row="0"
                                    Grid.RowSpan="3"
                                    Grid.Column="1"
                                    AutomationProperties.AccessibilityView="Raw" />

收件人:

   <Thumb
                                x:Name="HorizontalThumb"
                                Grid.Row="0"
                                Grid.RowSpan="3"
                                Grid.Column="1"
                                Width="24"
                                Height="24"
                                AutomationProperties.AccessibilityView="Raw"
                                Style="StaticResource SliderThumbImageStyle"
                                Background="ThemeResource SystemControlForegroundAccentBrush"
                                DataContext="TemplateBinding Value"
                                Tag="Binding ThumbImageSource, RelativeSource=RelativeSource TemplatedParent"
                                />

并对用于交换拇指的方法评论

protected override void OnApplyTemplate()
    
        base.OnApplyTemplate();

        Thumb = GetTemplateChild("HorizontalThumb") as Thumb;
        ImageThumb = GetTemplateChild("HorizontalImageThumb") as Thumb;

        //SwapThumbs(this);

        OnReady();
    

并添加以下代码以使用此属性更改控件使用的默认样式。

public MySlider()
    
        this.DefaultStyleKey = typeof(MySlider);
    

然后注释 Xamarin.uwp 的 MainPage.cs 中的代码。

LoadApplication(new App43.App());

最后,您可以在 Xamarin.uwp MainPage.xaml 中使用此控件。

<local:MySlider ThumbImageSource="Assets/pig.jpg"/>

结果:

我已经在 GitHub 上上传了我的示例,您可以下载 App43 文件夹以供参考。 https://github.com/WendyZang/Test.git

【讨论】:

谢谢@wendyzang。我检查了您的解决方案,这正是我的要求。但我在可移植代码而不是 uwp 代码上使用滑块控件。我也必须在 androidios 之间共享相同的代码。但我也在尝试使用 SliderRenderer 类来进行特定于平台的更改。 @mayank.karki 您可以在自定义渲染器中执行此操作。

以上是关于Xamarin.forms Slider ThumImage 隐藏在最大值的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.forms中的垂直滑块?

Tab Slider页面

Xamarin.Forms:如何在 Xamarin.Forms 跨平台项目中开发具有蓝牙连接的应用程序?

Xamarin.Forms:Forms.Context 已过时

Xamarin.Forms 手势密码实现

Xamarin.Forms 和 Xamarin Native 有啥区别? [关闭]