#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, и вы привязали видимость непосредственно к кнопке, поэтому, когда она возвращается, вся ваша кнопка отключается из-за коллапса видимости. вы можете проверить это, отключив конвертер