Xaml 如何使用应用程序栏使项目流动
我想将一些项目悬停在应用程序栏上方,这样看起来它们就像是堆叠在应用程序栏的顶部。当用户点击appbar的省略号进入菜单项选项时,我需要相应地使用appbar移动这些内容,然后在用户点击退出时跟随appbar返回其原始位置 下面是我想要完成的事情 MainPage.xamlXaml 如何使用应用程序栏使项目流动,xaml,windows-phone-7,animation,windows-phone-8,Xaml,Windows Phone 7,Animation,Windows Phone 8,我想将一些项目悬停在应用程序栏上方,这样看起来它们就像是堆叠在应用程序栏的顶部。当用户点击appbar的省略号进入菜单项选项时,我需要相应地使用appbar移动这些内容,然后在用户点击退出时跟随appbar返回其原始位置 下面是我想要完成的事情 MainPage.xaml <Grid x:Name="ContentPanel" Grid.Row="1" Margin="0"> <Grid.RowDefinitions> <R
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ListBox x:Name="ImageBar"
Grid.Row="1" Background="Silver"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ItemContainerStyle="{StaticResource ListBoxItemStyle}"
SelectedIndex="{Binding SelectedIndex, ElementName=ContentPivot, Mode=TwoWay}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<customcontrols:SplitPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBoxItem>
<Image Source="/Assets/add.png"/>
</ListBoxItem>
<ListBoxItem>
<Image Source="/Assets/edit.png"/>
</ListBoxItem>
<ListBoxItem>
<Image Source="/Assets/close.png"/>
</ListBoxItem>
<ListBoxItem>
<Image Source="/Assets/delete.png"/>
</ListBoxItem>
</ListBox>
<controls:Pivot x:Name="ContentPivot"
Grid.Row="0"
Margin="0,-12,0,0">
<controls:PivotItem>
<StackPanel>
<TextBlock Text="add" Style="{StaticResource PhoneTextTitle2Style}" FontWeight="Bold"/>
<RichTextBox Margin="0,12,0,0">
<Paragraph>
<Run Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."/>
</Paragraph>
</RichTextBox>
</StackPanel>
</controls:PivotItem>
<controls:PivotItem>
<StackPanel>
<TextBlock Text="edit" Style="{StaticResource PhoneTextTitle2Style}" FontWeight="Bold"/>
<RichTextBox Margin="0,12,0,0">
<Paragraph>
<Run Text="Sed bibendum vehicula quam."/>
</Paragraph>
</RichTextBox>
</StackPanel>
</controls:PivotItem>
<controls:PivotItem>
<StackPanel>
<TextBlock Text="close" Style="{StaticResource PhoneTextTitle2Style}" FontWeight="Bold"/>
<RichTextBox Margin="0,12,0,0">
<Paragraph>
<Run Text="Integer eget molestie lacus."/>
</Paragraph>
</RichTextBox>
</StackPanel>
</controls:PivotItem>
<controls:PivotItem>
<StackPanel>
<TextBlock Text="delete" Style="{StaticResource PhoneTextTitle2Style}" FontWeight="Bold"/>
<RichTextBox Margin="0,12,0,0">
<Paragraph>
<Run Text="Phasellus molestie volutpat ante pulvinar convallis."/>
</Paragraph>
</RichTextBox>
</StackPanel>
</controls:PivotItem>
</controls:Pivot>
</Grid>
主题和所有我不担心的事情。我只想把功能搞定。基本上,当用户点击椭圆时,我希望
ImageBar
能够像在应用程序条顶部一样上升和下降。我怎么能做这样的事?此外,我希望能够支持肖像和景观,以及超过1个菜单项。有没有一种方法可以自动做到这一点?如果没有,我可以如何完成此操作?您可以订阅ApplicationBar.StateChanged事件:
从事件处理程序中检查事件参数IsMenuVisible属性,并相应地进行布局调整
public MainPage()
{
ApplicationBar = new ApplicationBar();
ApplicationBar.StateChanged += ApplicationBar_StateChanged;
}
void ApplicationBar_StateChanged(object sender, ApplicationBarStateChangedEventArgs e)
{
if (e.IsMenuVisible)
{
// Move Image Up
}
else
{
// Move Image Down
}
}
关于你的其他问题。是的,您可以支持纵向/横向或两者。在XAML中查找phone:PhoneApplicationPage SupportedOrientations属性时,它将在新项目中默认为“纵向”。把它改成肖像画或风景画
<phone:PhoneApplicationPage
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait">
</phone:PhoneApplicationPage>
XAML:
好的,我来检查一下。关于设备方向和菜单项的数量,我想知道在显示菜单项时如何最好地确定应用程序栏的最终高度,因为这将根据应用程序栏中菜单项的数量进行调整。订阅StateChanged事件时,如何根据打开和关闭的appbar的准确速度和高度移动ImageBar
列表框?我认为没有办法检查appbar的大小。所以你可能只需要做一些尝试和错误,让它看起来不错。您肯定无法与appbar上下移动的速度相匹配,只有在appbar完成移动并触发事件后,您才能捕捉到appbar。
<phone:PhoneApplicationPage
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait">
</phone:PhoneApplicationPage>
private void BuildApplicationBar()
{
ApplicationBar = new ApplicationBar();
ApplicationBar.Mode = ApplicationBarMode.Minimized;
ApplicationBarMenuItem menuItem1 = new ApplicationBarMenuItem();
menuItem1.Text = "menu item 1";
menuItem1.Click += menuItem1_Click;
ApplicationBarMenuItem menuItem2 = new ApplicationBarMenuItem();
menuItem2.Text = "menu item 2";
menuItem2.Click += menuItem2_Click;
ApplicationBar.MenuItems.Add(menuItem1);
ApplicationBar.MenuItems.Add(menuItem2);
}
<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem x:Name="menuButton1" Text="menu button 1"
Click="menuButton1_Click" IsEnabled="True"/>
<shell:ApplicationBarMenuItem x:Name="menuButton2" Text="menu button 2"
Click="menuButton2_Click" IsEnabled="True"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>