连续显示 Flyout?
Display a Flyout in a row?
我在 ListView
中有一个内容列表,每个项目都包含一个 ID,此 ID 将传递到一个事件中,该事件应显示在 Flyout 中单击的行的详细信息。现在我的情况是:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5" x:Name="FlyoutRow"/>
</Grid.RowDefinitions>
所以你如何在主网格中看到我定义了一个名为 FlyoutRow
的 row
,此行在启动时不可见,但仅当用户单击ListView
.
现在的问题是行高为 5,因此 Flyout
永远不会出现在用户面前,是否可以展开保持 Flyout
动画的行?
这是我对 Flyout
:
的实现
<Controls:Flyout x:Name="Flyout" Header="Flyout" Grid.Row="1">
</Controls:Flyout>
将行高设置为自动。然后使用将更改弹出高度的故事板。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Storyboard x:Key="Maximize">
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetProperty="Height" From="5" To="100" Storyboard.TargetName="FL">
</DoubleAnimation>
</Storyboard>
<Storyboard x:Key="Minimize">
<DoubleAnimation Duration="0:0:0.1" Storyboard.TargetProperty="Height" From="100" To="5" Storyboard.TargetName="FL">
</DoubleAnimation>
</Storyboard>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="292*"/>
<RowDefinition Height="Auto" x:Name="FlyoutRow"/>
</Grid.RowDefinitions>
<ListView x:Name="View">
<ListView.Triggers>
<EventTrigger RoutedEvent="ListView.SelectionChanged">
<BeginStoryboard Storyboard="{StaticResource Maximize}"/>
</EventTrigger>
<EventTrigger RoutedEvent="ListView.LostFocus">
<BeginStoryboard Storyboard="{StaticResource Minimize}"/>
</EventTrigger>
</ListView.Triggers>
<ListBoxItem Content="First item" Tag="Some information from first item"/>
<ListBoxItem Content="Second item" Tag="Some information from second item"/>
<ListBoxItem Content="Third item" Tag="Some information from third item"/>
<ListBoxItem Content="Fourth item" Tag="Some information from fourth item"/>
<ListBoxItem Content="Fifth item" Tag="Some information from fifth item"/>
<ListBoxItem Content="Sixth item" Tag="Some information from sixth item"/>
<ListBoxItem Content="Seventh item" Tag="Some information from Seventh item"/>
<ListBoxItem Content="Eigth item" Tag="Some information from eith item"/>
</ListView>
<controls:Flyout Grid.Row="1" Width="517" x:Name="FL" HorizontalContentAlignment="Stretch" IsOpen="True">
<TextBlock Text="{Binding ElementName=View, Path=SelectedItem.Tag}" Background="#FF74FF24"/>
</controls:Flyout>
</Grid>
</Window>
我在 ListView
中有一个内容列表,每个项目都包含一个 ID,此 ID 将传递到一个事件中,该事件应显示在 Flyout 中单击的行的详细信息。现在我的情况是:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="5" x:Name="FlyoutRow"/>
</Grid.RowDefinitions>
所以你如何在主网格中看到我定义了一个名为 FlyoutRow
的 row
,此行在启动时不可见,但仅当用户单击ListView
.
现在的问题是行高为 5,因此 Flyout
永远不会出现在用户面前,是否可以展开保持 Flyout
动画的行?
这是我对 Flyout
:
<Controls:Flyout x:Name="Flyout" Header="Flyout" Grid.Row="1">
</Controls:Flyout>
将行高设置为自动。然后使用将更改弹出高度的故事板。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Storyboard x:Key="Maximize">
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetProperty="Height" From="5" To="100" Storyboard.TargetName="FL">
</DoubleAnimation>
</Storyboard>
<Storyboard x:Key="Minimize">
<DoubleAnimation Duration="0:0:0.1" Storyboard.TargetProperty="Height" From="100" To="5" Storyboard.TargetName="FL">
</DoubleAnimation>
</Storyboard>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="292*"/>
<RowDefinition Height="Auto" x:Name="FlyoutRow"/>
</Grid.RowDefinitions>
<ListView x:Name="View">
<ListView.Triggers>
<EventTrigger RoutedEvent="ListView.SelectionChanged">
<BeginStoryboard Storyboard="{StaticResource Maximize}"/>
</EventTrigger>
<EventTrigger RoutedEvent="ListView.LostFocus">
<BeginStoryboard Storyboard="{StaticResource Minimize}"/>
</EventTrigger>
</ListView.Triggers>
<ListBoxItem Content="First item" Tag="Some information from first item"/>
<ListBoxItem Content="Second item" Tag="Some information from second item"/>
<ListBoxItem Content="Third item" Tag="Some information from third item"/>
<ListBoxItem Content="Fourth item" Tag="Some information from fourth item"/>
<ListBoxItem Content="Fifth item" Tag="Some information from fifth item"/>
<ListBoxItem Content="Sixth item" Tag="Some information from sixth item"/>
<ListBoxItem Content="Seventh item" Tag="Some information from Seventh item"/>
<ListBoxItem Content="Eigth item" Tag="Some information from eith item"/>
</ListView>
<controls:Flyout Grid.Row="1" Width="517" x:Name="FL" HorizontalContentAlignment="Stretch" IsOpen="True">
<TextBlock Text="{Binding ElementName=View, Path=SelectedItem.Tag}" Background="#FF74FF24"/>
</controls:Flyout>
</Grid>
</Window>