如何在 uwp 中使用 DoubleToVisibilityConverter

问题描述

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

所以我的问题是----

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

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

[与在许多网站上工作相同(scrollUp Button)]

下面是MainPage.xaml

XAML - 页面资源

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

XAML - 用户界面元素

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

我必须添加的地方

可滚动高度

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

解决方法

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

struct Home: View {

    @ObservedObject var viewRouter = ViewRouter()
    let screenSize: CGRect = UIScreen.main.bounds
    
    var body: some View {
        ZStack {
            Color(#colorLiteral(red: 0.259467423,green: 0.5342320204,blue: 0.7349982858,alpha: 1))
            VStack(spacing: 0) {
                if self.viewRouter.currentView == "HomeList" {
                    HomeList()
                } else if self.viewRouter.currentView == "Messages" {
                    Messages()
                }else if self.viewRouter.currentView == "Favorites" {
                    Favorites()
                }else if self.viewRouter.currentView == "Search" {
                    Search()
                }else if self.viewRouter.currentView == "Profiles" {
                    Profiles()
                }

                HStack{
                    HomeTabItem(viewRouter: self.viewRouter,tabImage: "house",tabText: "HomeTitle",viewName: "HomeList",badgeNumber: 0)
                    HomeTabItem(viewRouter: self.viewRouter,tabImage: "envelope",tabText: "MessagesTitle",viewName: "Messages",badgeNumber: 69)
                    HomeTabItem(viewRouter: self.viewRouter,tabImage: "star",tabText: "FavoritesTitle",viewName: "Favorites",tabImage: "magnifyingglass",tabText: "SearchTitle",viewName: "Search",tabImage: "person",tabText: "ProfileTitle",viewName: "Profiles",badgeNumber: 0)
                }.frame(width: self.screenSize.width,height: 58)
                .foregroundColor(.white)
                .background(Color(#colorLiteral(red: 0.259467423,alpha: 1)))

            }
        }
        .edgesIgnoringSafeArea(.bottom)
    }
}

编辑:

为您的页面命名:

<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,ConverterParameter=42/> 中的依赖属性:

MainPage.xaml.cs
,

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

您可以参考document了解DoubleToVisibilityConverter的用法。

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

<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,FallbackValue=Collapsed,TargetNullValue=Collapsed
          }"/>
</StackPanel>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...