Область ввода WPF не работает на Dialoghost .NET 6

#c# #wpf #.net-6.0 #inputscope

#c# #wpf #.net-6.0 #область ввода

Вопрос:

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

 lt;materialDesign:DialogHost x:Name="dgh_addProduct" CloseOnClickAway="True" IsOpen="{Binding AddProduct}" Grid.RowSpan="4" gt;  lt;materialDesign:DialogHost.DialogContentgt;  lt;StackPanel Background="{DynamicResource MaterialDesignPaper}"gt;  lt;TextBox materialDesign:HintAssist.Hint="Cantidad" BorderThickness="2"  BorderBrush="{DynamicResource MaterialDesignDivider}"  Style="{StaticResource MaterialDesignOutlinedTextBox}" Width="200" Margin="16"  PreviewTextInput="TextBoxNumeric_PreviewTextInput" InputScope="Number" /gt;  lt;StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="16"gt;  lt;Button Style="{StaticResource MaterialDesignFlatDarkBgButton}"  Background="Red" BorderBrush="Transparent" Content="Close" Width="100"  Command="{Binding CloseAddProductCommand}" Margin=" 8 0 16 0"/gt;  lt;Button Style="{StaticResource MaterialDesignFlatAccentBgButton}"  BorderBrush="Transparent" Content="Agregar" Width="100"  Command="{Binding CloseAddProductCommand}" Margin=" 16 0 8 0"/gt;  lt;/StackPanelgt;    lt;/StackPanelgt;  lt;/materialDesign:DialogHost.DialogContentgt;    lt;/materialDesign:DialogHostgt;  

Ответ №1:

Я нашел решение добавить встроенный стиль в узел диалогового окна, вот так:

 lt;materialDesign:DialogHost x:Name="dgh_addProduct" CloseOnClickAway="True" IsOpen="{Binding AddProduct}"  Grid.RowSpan="4" Style="{StaticResource MaterialDesignEmbeddedDialogHost}"gt;  lt;materialDesign:DialogHost.DialogContentgt;  lt;StackPanel Background="{DynamicResource MaterialDesignPaper}"gt;  lt;TextBox materialDesign:HintAssist.Hint="Cantidad" BorderThickness="2"  BorderBrush="{DynamicResource MaterialDesignDivider}"  Style="{StaticResource MaterialDesignOutlinedTextBox}" Width="200" Margin="16"  PreviewTextInput="TextBoxNumeric_PreviewTextInput" InputScope="Number" /gt;  lt;StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="16"gt;  lt;Button Style="{StaticResource MaterialDesignFlatDarkBgButton}"  Background="Red" BorderBrush="Transparent" Content="Close" Width="100"  Command="{Binding CloseAddProductCommand}" Margin=" 8 0 16 0"/gt;  lt;Button Style="{StaticResource MaterialDesignFlatAccentBgButton}"  BorderBrush="Transparent" Content="Agregar" Width="100"  Command="{Binding CloseAddProductCommand}" Margin=" 16 0 8 0"/gt;  lt;/StackPanelgt;    lt;/StackPanelgt;  lt;/materialDesign:DialogHost.DialogContentgt;    lt;/materialDesign:DialogHostgt;  

Теперь он распознает область ввода и изменяет макет сенсорной панели.