折叠或显示自定义工具 - 可绑定应用程序栏

时间:2012-03-19 00:18:45

标签: windows-phone-7 mvvm

我目前正在使用枢轴控件制作WP7应用程序。我正在使用bindable application bar(不是默认的应用程序栏),因为我在我的应用程序中使用MVVM。我想更改显示的应用栏,具体取决于我当前所在的枢轴项目。

因为我正在使用自定义应用程序栏工具,我认为我可以折叠或使每个应用程序栏可见,具体取决于我所在的枢轴项目,但应用程序栏不会崩溃,只有锻炼应用程序栏显示在我的应用程序中(也是,这是因为我在我的XAML中最后定义了训练栏吗?)。

这种工具会不会崩溃吗?

XAML:

<Grid x:Name="LayoutRoot"
  Background="Transparent">
<Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="*" />
</Grid.RowDefinitions>

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel"
      Grid.Row="1"
      Margin="12,0,12,0">
    <controls:Pivot Title="{Binding Name}" LoadingPivotItem="pivotMain_LoadingPivotItem">
        <controls:PivotItem Header="Details" Name="detailsItem">
            <view:EditClientDetails/>
        </controls:PivotItem>
        <controls:PivotItem Header="Workouts" Name="workoutItem">
            <ListBox>
                <ListBoxItem>
                    <view:AddLunch/>
                </ListBoxItem>
            </ListBox>
        </controls:PivotItem>
        <controls:PivotItem Header="Diets" Name="dietItem">
            <ListBox>
                <ListBoxItem>
                    <view:AddDinner />
                </ListBoxItem>
            </ListBox>
        </controls:PivotItem>
    </controls:Pivot>
    <!--
    <Button FontSize="30" FontFamily="Segoe WP" Content="Add Workout" Height="80" HorizontalAlignment="Left" Margin="25,500,0,0" Name="addWorkout" VerticalAlignment="Top" Width="400" Click="addWorkout_Click" />
    <Button FontSize="30" FontFamily="Segoe WP" Content="Add Diet" Height="80" HorizontalAlignment="Left" Margin="25,414,0,0" Name="addDiet" VerticalAlignment="Top" Width="400" Click="addDiet_Click" />
    <Button FontSize="30" FontFamily="Segoe WP" Content="Edit Details" Height="80" HorizontalAlignment="Left" Margin="25,328,0,0" Name="editDetails" VerticalAlignment="Top" Width="400" />
    -->
    <Preview:BindableApplicationBar x:Name="AppBarEdit">
        <Preview:BindableApplicationBarIconButton
        Command="{Binding AddClientCommand}"
        IconUri="/Images/appbar.add.rest.png"
        Text="Edit" />
        <Preview:BindableApplicationBarIconButton
        Command="{Binding SaveClientCommand}"
        IconUri="/Images/appbar.check.rest.png"
        Text="Save Client" />
    </Preview:BindableApplicationBar>

    <Preview:BindableApplicationBar x:Name="AppBarDiet">
        <Preview:BindableApplicationBarIconButton
        Command="{Binding GenerateDietCommand}"
        IconUri="/Images/appbar.add.rest.png"
        Text="Generate" />
        <Preview:BindableApplicationBarIconButton
        Command="{Binding SaveDietCommand}"
        IconUri="/Images/appbar.check.rest.png"
        Text="Save Diet" />
    </Preview:BindableApplicationBar>

    <Preview:BindableApplicationBar x:Name="AppBarWorkout" Margin="-157,-70,157,70">
        <Preview:BindableApplicationBarIconButton
        Command="{Binding GenerateWorkoutCommand}"
        IconUri="/Images/appbar.add.rest.png"
        Text="Generate" />
        <Preview:BindableApplicationBarIconButton
        Command="{Binding SaveWorkoutCommand}"
        IconUri="/Images/appbar.check.rest.png"
        Text="Save Workout" />
    </Preview:BindableApplicationBar>
</Grid>

代码(目前仅在代码中用于测试目的):

private void pivotMain_LoadingPivotItem(object sender, PivotItemEventArgs e)
{
    if (e.Item == workoutItem)
    {
        AppBarEdit.Visibility = System.Windows.Visibility.Collapsed;
        AppBarWorkout.Visibility = System.Windows.Visibility.Visible;
        AppBarDiet.Visibility = System.Windows.Visibility.Collapsed;


    }
    else if (e.Item == dietItem)
    {      
        AppBarEdit.Visibility = System.Windows.Visibility.Collapsed;
        AppBarWorkout.Visibility = System.Windows.Visibility.Collapsed;
        AppBarDiet.Visibility = System.Windows.Visibility.Visible;

    }
    else if (e.Item == detailsItem)
    {
        AppBarEdit.Visibility = System.Windows.Visibility.Visible;
        AppBarWorkout.Visibility = System.Windows.Visibility.Collapsed;
        AppBarDiet.Visibility = System.Windows.Visibility.Collapsed;
}

1 个答案:

答案 0 :(得分:0)

尝试设置BindableAppBar的IsVisible属性。您可以拥有多个BindableAppBar。但是,一次只显示一个。因此,如果您将两个AppBars的IsVisible设置为false,那么如果将其设置为True,则会显示第三个。

<bindableAppBar:BindableAppBar IsVisible="{Binding IsVisible1}">
    <bindableAppBar:BindableAppBarButton IconUri="/Assets/AppBar/AppIcon1.png" Text="Text1"/>
</bindableAppBar:BindableAppBar>

<bindableAppBar:BindableAppBar IsVisible="{Binding IsVisible2}">
    <bindableAppBar:BindableAppBarButton IconUri="/Assets/AppBar/AppIcon2.png" Text="Test2"/>
</bindableAppBar:BindableAppBar>