UWP xaml: изменение панели создает исчезновение кнопки

#user-interface #button #uwp

#пользовательский интерфейс #кнопка #uwp

Вопрос:

Я создаю проект UWP. У меня есть основной пользовательский элемент управления и некоторые вспомогательные пользовательские элементы управления, которые я должен отображать в зависимости от выбора пользователя. Поверх основного пользовательского элемента управления у меня есть несколько кнопок с изображением, которые пользователь может выбрать для перехода с одной панели на другую :

введите описание изображения здесь На каждой подпанели у меня также есть кнопки (одна для возврата к главной панели и т. Д.).

введите описание изображения здесь

Весь экран панели управляется преобразователем IntToVisibilityConverter, который преобразует индекс панели в видимость и обратно. и вперед.

Если я открою приложение, допустим, PanelIndex = 0, кнопки на панели 0 отображаются правильно, но когда я меняю PanelIndex на 1 -> кнопка на панели 1 не появляется.

Теперь, если я открою его с помощью PanelIndex = 1, кнопки на панели 1 теперь отображаются правильно, а затем, вернувшись на панель 0 -> панель 0 кнопка исчезает.

кто-нибудь знает, почему кнопки могут появляться или исчезать? это нормальное поведение? (и я что-то упускаю) есть ли способ исправить это или, по крайней мере, принудительно отключить изображение на новой отображаемой панели?

Редактировать:

Кнопка выглядит так

 <Button x:Class="MyApp.UIElements.AnimatedButton"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:MyApp.UIElements"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        xmlns:utils="using:MyApp.Utils"
        Name="Control">
    <Grid IsHitTestVisible="False">
        <utils:LayoutTransformer x:Name="transformer">
            <Grid HorizontalAlignment="Stretch"
                  VerticalAlignment="Stretch">
                <Image Source="/Resources/MyGif.gif"
                       IsHitTestVisible="False" />
            </Grid>
        </utils:LayoutTransformer>
        <Image Source="{Binding ElementName=Control,Path=Image}"
               IsHitTestVisible="False"
               Margin="30" />
    </Grid>
</Button>
  

изменение панели выполняется в viewmodel с использованием int, который соответствующим образом устанавливает видимость каждой панели. В этом нет ничего особенного.

Я добавлю, что при запуске приложения, если нажать CTRL X и повторно CTRL V на любую кнопку, она появляется (отсюда и недействительная визуальная подсказка).

Спасибо миру

Комментарии:

1. Не могли бы вы, пожалуйста, поделиться фрагментом кода о том, как вы это сделали?

2. Может быть, потому, что вы используете конвертер int в visibility, и вы привязали видимость непосредственно к кнопке, поэтому, когда она возвращается, вся ваша кнопка отключается из-за коллапса видимости. вы можете проверить это, отключив конвертер