我有一个Listview定义如下:
<ListView x:Name="lvPlaylist" Width="530" Height="337" IsItemClickEnabled="True" ItemClick="gvPlaylist_ItemClick">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Image Stretch="Fill" Source="{Binding albumArtURI}" Height="48" Width="48" />
<TextBlock Text="{Binding GetPlaylistFormat}" Width="500" Height="18"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我想在点击的每个项目上打开一个“上下文”-Flyout。 到目前为止,我只能将弹出窗口附加到整体,但弹出窗口显示在列表视图的边框 - 而不是直接附加到所选项目。
答案 0 :(得分:3)
Button
具有Flyout
属性。您所要做的就是将模板的内容包装在Button
中,为按钮创建Style
,删除所有视觉效果,然后为其创建Flyout
。
<DataTemplate>
<Button Style="{StaticResource ButtonWrapperStyle}">
<Button.Content>
<Grid>
<Image Stretch="Fill" Source="{Binding albumArtURI}" Height="48" Width="48" />
<TextBlock Text="{Binding GetPlaylistFormat}" Width="500" Height="18"/>
</Grid>
</Button.Content>
<Button.Flyout>
<!-- Make Flyout Here -->
</Button.Flyout>
</Button>
</DataTemplate>
显然这里还有其他东西可以做,但你明白了。
希望这有助于编码!
答案 1 :(得分:2)
看起来你也可以这样做
&#34;下一个示例显示附加到TextBlock的弹出窗口。如前所述,您可以使用FlyoutBase.AttachedFlyout附加属性将Flyout附加到任何FrameworkElement。&#34;
<TextBlock Text="{Binding ElementName=MyTextBox, Path=Text}"
Tapped="TextBlock_Tapped" FontSize="18">
<FlyoutBase.AttachedFlyout>
<Flyout>
<TextBox x:Name="MyTextBox" Text="You can edit this text by tapping it."/>
</Flyout>
</FlyoutBase.AttachedFlyout>
</TextBlock>