Свернуть или сделать видимым пользовательский инструмент - привязываемая панель приложения - PullRequest
2 голосов
/ 19 марта 2012

В настоящее время я делаю приложение WP7 с элементом управления pivot.Я использую привязываемую панель приложения (не панель приложения по умолчанию), потому что я использую 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;
}

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

Интерфейс WP7 поддерживает один ApplicationBar, который задается с помощью свойства PhoneApplicationPage.ApplicationBar , привязываемая панель приложения является оберткой над классом платформы, поэтому она все еще имеет то же ограничение.

Для того, что вы пытаетесь сделать, я просто написал бы немного кода. Это не «нарушает» шаблон MVVM.

0 голосов
/ 08 сентября 2014

Попробуйте установить свойство IsVisible в BindableAppBar. Вы можете иметь несколько BindableAppBar. Однако только один будет отображаться одновременно. Так что если вы установили 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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...