Я сталкиваюсь с проблемой в своем проекте, и у меня нет гораздо больше времени для проведения исследований.WPF «Скрыт» за панелью
Цель этого проекта - разрешить посещение тестов без физического присутствия.
Вы получаете файл, содержащий ваши тесты, вы посещаете их (ограниченное время) и отправляете обратно файл, содержащий ваши ответы.
Я получил текстовое поле в StackPanel, которое содержится в другой StackPanel.
Все элементы управления создаются программно.
Элементы управления добавлены правильно, но TextBox не реагирует на ввод мыши .... (на самом деле только тогда, когда текстовое поле является пункт аст и даже Ther только маленький последний пиксель)
UserControl XAML файл :
<UserControl x:Class="DataLibrary.View.Questions.ListQuestionInterface"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:localization ="clr-namespace:DataLibrary.Resources"
xmlns:convert ="clr-namespace:DataLibrary.View.Converters"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Loaded="ListQuestionInterface_OnLoaded">
<UserControl.Resources>
<localization:LocalizedStrings x:Key="LocalizedStrings"/>
<convert:getVisible x:Key="getVisible"/>
<convert:getText x:Key="getText"/>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="10*"/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<StackPanel VerticalAlignment="Stretch" Orientation="Horizontal" x:Name="body" Grid.Row="0" FocusManager.IsFocusScope="True"/>
<Label Grid.Row="0" Margin="0,10,0,0" x:Name="explanations"/>
<Button Content="{Binding Path=type, Converter={StaticResource getText}}"
HorizontalAlignment="Right"
Margin="0,0,10,10"
VerticalAlignment="Bottom"
Grid.Row="1"
Width="120"
Height="20"
Click="DisplayAnswerButton_Click"
Visibility="{Binding Path=type, Converter={StaticResource getVisible}}"/>
</Grid>
</UserControl>
код за:
Я не думаю, что кнопка имеет somethng делать с этой проблемой, так что я оставлю код конвертеры прочь.
Я проверил некоторые вещи уже:
- IsHitTestVisible никогда не устанавливается на ложный
- Определение одного из stackpanels как FocusScope ничего
- не изменится Если я поместить все мои контролей в холст и холст в стеке, я могу свободно нажимать на мои элементы управления, но их размещение полностью нарушено.
- Фактическая ширина/высота элемент управления достаточно, чтобы взаимодействовать с ними (60x20)
Проблема, кажется, появилась только после того, как с помощью следующего trick, чтобы установить первый целенаправленный элемент на других UserControls (которые являются не в текущем VisualTree больше)
Мне действительно нужна помощь, так как я не могу найти кого-то с подобной проблемой.
А вот две картинки, чтобы проиллюстрировать эту проблему:
Черные стрелки показывает, где мой я щелкнул перед съемкой экрана (кстати, если вы знаете какой-либо программное обеспечение, которое может сделайте снимок экрана с помощью мыши, я беру его :))
Это классический пример * почему * downvoters должны указывать причину. +1, чтобы противодействовать тому, кто ниспровергнут. Путь, ребята, - пугают новых людей. (Если вы хотите, чтобы новые сотрудники, которые понятия не имеют, что они делают, держите downvoting новых пользователей. Это наверняка достигнет желаемого эффекта во времени.) –
В конце кода генерации refreshStackPanel() попробуйте позвонить this.InvalidateVisual(); this.UpdateLayout(); И скажите нам, разрешает ли она эту проблему. – Tony
Просто протестировано, ничего не меняет – Sidewinder94