Элементы управления внутри UserControl не вызывают никаких событий - PullRequest
0 голосов
/ 05 апреля 2019

РЕДАКТИРОВАТЬ: я снова протестировал другое диалоговое окно, и он, кажется, показывает ту же проблему, что и диалоговое окно, упомянутое выше.

РЕДАКТИРОВАТЬ 2: После дополнительного тестирования это кажется проблемой Фокуса.Когда появляется диалоговое окно, оно не отвечает.Однако, если я щелкаю в другом окне или экране, а затем нажимаю назад, элементы управления работают должным образом.

У меня есть UserControl, который должен использоваться в качестве диалога в DialogHost (из MaterialDesignInXAML Toolkit).Когда я вызываю DialogHost.Show в диалоговом окне, оно всплывает, но элементы управления внутри (т. Е. Некоторые текстовые поля, некоторые списки и кнопка) фактически ничего не делают.Они воспроизводят любые связанные с ними анимации, но, например, в текстовых полях, я не могу их ввести.

Я заметил, что когда я добавляю точку останова при отладке перед вызовом .Show (), он работает как положено.Я могу ввести текстовые поля, я могу щелкнуть элементы в представлениях списка и т. Д. Я также попытался переместить свои вызовы, но это все еще кажется проблемой.

ThreeSixtyPackageDialog.xaml

<UserControl x:Class="MultiCapture2._0.Views.ThreeSixtyPackageDialog"
             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:local="clr-namespace:MultiCapture2._0.Views"
             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
             mc:Ignorable="d" 
             MinWidth="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Grid Grid.Row="0" Background="{StaticResource DvsportBlackHeaderFooter}">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>

            <TextBlock Grid.Column="0" Name="TitleTextBlock" Text="360 Package Information" Foreground="{StaticResource DvsportLightText}" Padding="10"
                       HorizontalAlignment="Left"></TextBlock>
            <Button Grid.Column="1" Name="CloseButton" Content="{materialDesign:PackIcon Close}" Command="materialDesign:DialogHost.CloseDialogCommand" 
                    Foreground="{StaticResource DvsportLightText}" Background="Transparent" BorderThickness="0" materialDesign:ShadowAssist.ShadowDepth="Depth0"></Button>
        </Grid>

        <StackPanel Grid.Row="1" Background="{StaticResource DvsportBlackBackground}">
            <TextBox Name="FromTextBox" materialDesign:HintAssist.Hint="From" Padding="10 0 0 0" Foreground="{StaticResource DvsportLightText}" Style="{StaticResource MaterialDesignFloatingHintTextBox}"></TextBox>
            <TextBox Name="MessageTextBox" materialDesign:HintAssist.Hint="Message" Padding="10 0 0 0" Foreground="{StaticResource DvsportLightText}" Style="{StaticResource MaterialDesignFloatingHintTextBox}"></TextBox>
            <TextBox Name="PathTextBox" materialDesign:HintAssist.Hint="Path" Text="/MULTICAPTURE" CharacterCasing="Upper" Padding="10 0 0 0" Foreground="{StaticResource DvsportLightText}" Style="{StaticResource MaterialDesignFloatingHintTextBox}"></TextBox>
        </StackPanel>

        <Button Grid.Row="2" Height="40" Foreground="{StaticResource DvsportBlackBackground}" Background="{StaticResource DvsportGold}" BorderBrush="{StaticResource DvsportBlackBackground}" BorderThickness="0" Click="SaveButton_OnClick" Content="Save"/>
    </Grid>
</UserControl>

ThreeSixtyPackageDialog.xaml.cs

public partial class ThreeSixtyPackageDialog : UserControl
    {
        public ThreeSixtyPackageDialog()
        {
            InitializeComponent();
        }

        private void SaveButton_OnClick(object sender, RoutedEventArgs e)
        {
            DialogHost.CloseDialogCommand.Execute(null, null);
        }
    }

MonitorUserControl.Events.xaml.cs (где отображается диалоговое окно

...
packageFileUtil.CreatePackageFile(result.Payload, input.InputNum, pendingScheduleToStop);
if (pendingScheduleToStop == null)
{
    var threeSixtyPkgDialog = new ThreeSixtyPackageDialog();
    await DialogHost.Show(threeSixtyPkgDialog, "
}
...

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

...