如何解决如何在 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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。