问题描述
每当鼠标悬停在滑动视图上时,我都想在滑动视图中打开右箭头。
实际情况: 我收到消息,表明鼠标正在进入和退出滑动视图,但是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>
解决方法
每当鼠标悬停在滑动视图上时,我都想在滑动视图中打开右箭头。
在UWP平台中SwipeView
的匹配本机控件为SwipeControl
,但不提供Open
方法。并且SwipeViewRenderer
尚未实现Open
行为。因此Open
方法无法在UWP平台中使用。