uwp - 用于滑动视图的 UWP CustomRenderer 无法使用 Element.Open(OpenSwipeItem) 打开
问题描述
每当鼠标悬停在滑动视图上时,我想在滑动视图中打开正确的项目。
实际发生的情况:我收到鼠标正在进入和退出滑动视图的消息,但 Element.Open(OpenSwipeItem) 不起作用。
这是我的自定义渲染器代码:
[assembly: ExportRenderer(typeof(SwipeView), typeof(CustomSwipeViewRenderer))]
namespace myProject.UWP
{
public class CustomSwipeViewRenderer : SwipeViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<SwipeView> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.PointerEntered += Control_PointerEntered;
Control.PointerExited += Control_PointerExited; ;
}
}
private void Control_PointerExited(object sender, PointerRoutedEventArgs e)
{
Element.Close();
Debug.WriteLine("Exited");
}
private void Control_PointerEntered(object sender, PointerRoutedEventArgs e)
{
Element.Open(OpenSwipeItem.RightItems);
Debug.WriteLine("Entered");
}
}
}
这是滑动视图,它位于列表视图的视单元内:
<SwipeView>
<SwipeView.RightItems>
<SwipeItems Mode="Reveal" SwipeBehaviorOnInvoked="Close">
<SwipeItem Text="Teste"
IconImageSource="{markupExtensions:PlatformImage SourceImage='circle'}"
BackgroundColor="{StaticResource DarkBaseBackgroundColor}"/>
</SwipeItems>
</SwipeView.RightItems>
<Grid Margin="5" Padding="5" HorizontalOptions="FillAndExpand" BackgroundColor="{StaticResource VeryLightGrayColor}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ffimageloading:CachedImage Grid.RowSpan="2" IsVisible="{Binding HasWarnings}" LoadingPlaceholder="{markupExtensions:PlatformImage SourceImage='placeholder_icon'}" Source="{Binding WarningIcon}" Aspect="AspectFit" HeightRequest="50" WidthRequest="50" VerticalOptions="Center" HorizontalOptions="Center"/>
<StackLayout Grid.Column="1" Orientation="Horizontal">
<Label Text="{Binding Name}" FontAttributes="Bold" VerticalOptions="Center"/>
<Frame Padding="3" BackgroundColor="{Binding OrderStatusColor}" HasShadow="False" CornerRadius="3">
<Label Text="{Binding OrderStatusString}" TextColor="{StaticResource LightTextColor}" FontSize="{OnPlatform Micro, UWP=10}"/>
</Frame>
<abstractions:TintedImage Source="{markupExtensions:PlatformImage SourceImage='printer'}" Aspect="AspectFit" TintColor="{Binding PrintStatusColor}" HeightRequest="{StaticResource StatusIconsWidhAndHeight}" WidthRequest="{StaticResource StatusIconsWidhAndHeight}" VerticalOptions="Center" HorizontalOptions="Center"/>
<abstractions:TintedImage Source="{markupExtensions:PlatformImage SourceImage='money'}" Aspect="AspectFit" TintColor="{Binding PaidStatusColor}" HeightRequest="{StaticResource StatusIconsWidhAndHeight}" WidthRequest="{StaticResource StatusIconsWidhAndHeight}" VerticalOptions="Center" HorizontalOptions="Center"/>
<Label Text="{Binding OrderTimeString}" FontSize="{OnPlatform Micro, UWP=10}" TextColor="{StaticResource TextColor}" VerticalOptions="Center" HorizontalOptions="Start"/>
</StackLayout>
<Label Grid.Column="1" Grid.Row="1" Text="{Binding Description}" VerticalOptions="Center" FontAttributes="Italic"/>
<Label Grid.Column="2" Grid.RowSpan="2" Text="{Binding ValueString}" FontAttributes="Bold" HorizontalOptions="Center" VerticalOptions="Center" Margin="5"/>
</Grid>
</SwipeView>
解决方案
每当鼠标悬停在滑动视图上时,我想在滑动视图中打开正确的项目。
SwipeView
在UWP平台匹配的原生控件是SwipeControl
,不提供Open
方法。并SwipeViewRenderer
没有执行Open
行为。所以Open
方法不能在 UWP 平台上工作。
推荐阅读
- python - 我在 python 中遇到 OpenCV 错误...我的代码如下所示?请尽快解决。提前致谢
- java - 由于线程异常导致 Hive 内存不足
- javascript - 在 Firefox 中使用 css“变换”和“透视”重复 2 层 css 视差背景(背景未在内容高度切断)
- content-security-policy - CSP frame-src 指令的 Facebook 聊天插件问题
- google-cloud-firestore - firestore 文档中的“client”是什么意思
- node.js - 如何将命令行参数传递给角度应用程序
- influxdb - 在 InfluxDB 中,如何使用正则表达式删除整个测量值?
- git - 当我从 gitlab 克隆时,并不是 repo 中的所有文件都会出现
- python - Stripe:将来自一个客户的多笔交易批量处理为一次收费并优化小额支付
- python-3.x - 如何从元组列表中获取特定元素