如何在 uwp 中使用 DoubleToVisibilityConverter

How to use DoubleToVisibilityConverter in uwp

DoubleToVisibilityConverter 可用于根据给定的阈值轻松地将双精度值更改为基于可见性的值。如果同时设置了 GreaterThan 和 LessThan,如果目标值介于这两个值之间,转换器将设置可见性。否则,它将查找大于或小于指定值的目标。

所以我的问题是----

如何将 DoubleToVisibilityConverter 用于滚动查看器,因为我想隐藏(返回顶部)按钮和滚动条最后处于向下位置,当滚动条向上时,它将显示按钮.

我正在使用返回顶部按钮滚动到顶部。

[与在许多网站中的工作相同(向上滚动按钮)]

下面一个是MainPage.xaml

XAML - 页面资源

<Page.Resources>
   <converters:DoubleToVisibilityConverter x:Key="GreaterThanToleranceVisibilityConverter" GreaterThan="65.0"/>
</Page.Resources>

XAML - Ui 元素

<Button x:name="Scroll_To_Up_Button" Visibility="{Binding ScrollableHeight, Converter{StaticResourceGreaterThanToleranceVisibilityConverter}/>

我必须添加的地方

ScrollableHeight

MainPage.xaml.cs中以及如何在MyUWP App中使用

您是否尝试添加参数,例如

<Button x:name="Scroll_To_Up_Button" Visibility="{Binding ScrollableHeight, Converter={StaticResource GreaterThanToleranceVisibilityConverter}, ConverterParameter=42/>

编辑:

为您的页面命名:

<Page Name="thisPage"
      ... >

然后将您的绑定源指向它以访问依赖项 属性 ScrollableHeight 如果这是您声明的类型:

<Button x:name="Scroll_To_Up_Button" Visibility="{Binding ScrollableHeight, ElementName=thisPage, Converter={StaticResource GreaterThanToleranceVisibilityConverter}, ConverterParameter=42/>

以及 MainPage.xaml.cs 中的依赖项 属性:

public static readonly DependencyProperty ScrollableHeightProperty = DependencyProperty.Register(nameof(ScrollableHeight), typeof(int), typeof(*NAMEOFYOURPAGE*), new PropertyMetadata(null));

public int ScrollableHeight
{
    get => (int)GetValue(ScrollableHeightProperty);
    set => SetValue(ScrollableHeightProperty, value);
}

绑定DoubleToVisibilityConverter不需要在MainPage.xaml.cs中写代码。您可以在 MainPage.xaml 文件中设置 DoubleToVisibilityConverter 实例的 GreaterThan 属性 或 LessThan 属性。并且您应该绑定 ScrollViewer.VerticalOffset 属性 来获取内容垂直滚动的距离,而不是 ScrollViewer.ScrollableHeight 属性 如果确定了 ScrollViewer 的内容,则后者是一个常量。

DoubleToVisibilityConverter的用法可以参考document

请检查以下代码作为示例:

<Page.Resources>
    <converters:DoubleToVisibilityConverter x:Key="GreaterThanToleranceVisibilityConverter" 
     GreaterThan="100" TrueValue="Visible" FalseValue="Collapsed"/>
</Page.Resources>

<StackPanel>
    <ScrollViewer x:Name="scrollViewer" Width="300" Height="300" VerticalScrollBarVisibility="Visible"
                  VerticalScrollMode="Enabled">
        <TextBlock Text="111122222222222222222222222222222222211111111111111111111111111" 
                   Width="10" TextWrapping="Wrap" 
                   />
    </ScrollViewer>
    <Button x:Name="Scroll_To_Up_Button" Content="back to up" Click="Scroll_To_Up_Button_Click" Margin="10"
            Visibility="{Binding VerticalOffset,ElementName=scrollViewer,
        Converter={StaticResource GreaterThanToleranceVisibilityConverter},FallbackValue=Collapsed,
        TargetNullValue=Collapsed
          }"/>
</StackPanel>