在内置的Windows Phone应用程序中,列表中的可单击项(StackPanel或LongListSelector)通常具有以下行为:
在所有应用视图(您向左侧滑动主屏幕时可以看到的屏幕)中轻松观察到该行为。因为2. + 3。已经按下了按钮,并且1.按下按钮时收缩所有内容的Style很容易实现,我很确定列表中的项目使用样式按钮作为项目模板 - 使用样式与默认的按钮样式不同。
我在哪里找到那个风格?
答案 0 :(得分:1)
答案 1 :(得分:1)
根据普拉迪普的回答,我可以解决这个问题。可点击的项目不是Button
,尽管也可以实现与按钮样式相同的行为(请参阅本答案的底部)。缩放时的收缩效果实际上是一种倾斜拍摄效果,如果项目在左侧或右侧而不是中间轻敲,则细节观察者可以看到该效果。
如果LongListSelector
启用了倾斜效果,则倾斜适用于各个LongListSelector
项目。 TiltEffect
是附属财产。要使用它,项目必须引用nuget上可用的Microsoft WPtoolkit。
我在下面添加了代码,其中显示了如何在TiltEffect
中使用ContextMenu
和LongListSelector
。要对LongListSelector
中的商品点击做出反应,请参阅LongListSelector: Item tap?。
<phone:PhoneApplicationPage
x:Class="Test.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit">
<Grid x:Name="LayoutRoot">
<phone:LongListSelector ItemsSource="{Binding Items}" toolkit:TiltEffect.IsTiltEnabled="True">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding}" Style="{StaticResource PhoneTextLargeStyle}"/>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="delete"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
</Grid>
</phone:PhoneApplicationPage>
或者,看起来和行为相同的按钮样式可以用相同的附加属性实现,或多或少*像这样:
<Style x:Key="ListButton" TargetType="Button">
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyLight}" />
<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeLarge}" />
<!-- Transparent background is necessary to be part of hitbox. transparent background and null background behave differently -->
<Setter Property="Background" Value="Transparent" />
<Setter Property="Padding" Value="0" />
<Setter Property="toolkit:TiltEffect.IsTiltEnabled" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border BorderThickness="{TemplateBinding BorderThickness}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
<ContentPresenter Content="{TemplateBinding Content}" Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
*此样式很少,并且不会处理所有情况(例如禁用/启用)。