UWP не может уменьшить ширину текстового поля до менее 70 - PullRequest
0 голосов
/ 11 апреля 2019

Проблема в том, что если я установлю ширину текстового поля ниже 70, она не будет отображаться полностью.Я установил MinWidth на 0, а TextBox по-прежнему отображается как нижнее текстовое поле на следующем изображении.Ширина верхнего я установил на 70, и он отображается полностью.Что-то мне нужно изменить в шаблоне, чтобы он работал?есть идеи?

enter image description here

<TextBox
    Width="30"
    Height="50"
    MinWidth="0" />

Также я попытался отредактировать шаблон TextBox в конструкторе Visual Studio.Я нажал «Изменить шаблон», и ничего не произошло, но он отлично работал с другими элементами управления.

мои исходные коды: я установил ширину первого текстового поля равным 50, а остальные - 70.

<Grid.ColumnDefinitions>
                    <ColumnDefinition Width="auto" />
                    <ColumnDefinition Width="auto" />
                    <ColumnDefinition Width="auto" />
                    <ColumnDefinition Width="auto" />
                    <ColumnDefinition Width="auto" />
                    <ColumnDefinition Width="auto" />
                </Grid.ColumnDefinitions>
                <Grid Grid.Column="0" Margin="10,0">
                    <controls:DropShadowPanel
                        BlurRadius="40"
                        ShadowOpacity="0.3"
                        Color="{StaticResource blueColor}">
                        <TextBox
                            Width="50"
                            x:Name="Code0"
                            Height="80"
                            MinWidth="0"
                            Background="White"
                            BorderBrush="{StaticResource blueColor}"
                            BorderThickness="1"
                            CornerRadius="10"
                            FontSize="55"
                            TextAlignment="Center" />
                    </controls:DropShadowPanel>
                </Grid>
                <Grid Grid.Column="1" Margin="10,0">
                    <controls:DropShadowPanel
                        BlurRadius="40"
                        ShadowOpacity="0.3"
                        Color="{StaticResource blueColor}">
                        <TextBox
                            Width="70"
                            x:Name="Code1"
                            Height="80"
                            MinWidth="0"
                            Background="White"
                            BorderBrush="{StaticResource blueColor}"
                            BorderThickness="1"
                            CornerRadius="10"
                            FontSize="55"
                            TextAlignment="Center" />
                    </controls:DropShadowPanel>
                </Grid>
                 ...

это выглядитвот так enter image description here

обновления:

<controls:DropShadowPanel
                        BlurRadius="40"
                        Width="80"
                        Background="Red"
                        ShadowOpacity="0.3"
                        Color="{StaticResource blueColor}">
                        <TextBox
                            x:Name="Code0"
                            Width="50"
                            Height="80"
                            MinWidth="0"
                            MaxWidth="65"
                            Background="White"
                            BorderBrush="{StaticResource darkText}"
                            BorderThickness="1"
                            CornerRadius="10"
                            HorizontalContentAlignment="Center"
                            FocusVisualPrimaryBrush="{StaticResource blueColor}"
                            FocusVisualSecondaryBrush="{StaticResource blueColor}"
                            FontSize="55"
                            KeyDown="TwoFactorKeyDown"
                            TextAlignment="Center" />
                    </controls:DropShadowPanel>

enter image description here

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

UWP не может уменьшить ширину текстового поля до менее чем 70

Область красного круга - Граница TextBox. и это MinHeight и MinWidth TextControlThemeMinHeight и TextControlThemeMinWidth. Так что, если вы просто MinWidth свойство, граница MinWidth не будет изменена.

enter image description here

<Border x:Name="BorderElement"
        Background="{TemplateBinding Background}"
        BorderThickness="{TemplateBinding BorderThickness}"
        BorderBrush="{TemplateBinding BorderBrush}"
        CornerRadius="{TemplateBinding CornerRadius}" 
        Grid.ColumnSpan="2" Grid.Column="0" 
        Control.IsTemplateFocusTarget="True" 
        MinHeight="{ThemeResource TextControlThemeMinHeight}" 
        MinWidth="{ThemeResource TextControlThemeMinWidth}"
        Grid.RowSpan="1"
        Grid.Row="1"/>

Если вы хотите полностью изменить минимальную ширину TextBox, вы можете добавить следующее на своей странице Ресурсы

<Page.Resources>
    <x:Double x:Key="TextControlThemeMinHeight">32</x:Double>
    <x:Double x:Key="TextControlThemeMinWidth">0</x:Double>
</Page.Resources>
0 голосов
/ 11 апреля 2019

Хорошо, поэтому я не думаю, что ваше текстовое поле является проблемой. Я считаю, что ваша проблема с шириной ваших элементов управления: DropShadowPanel. Я подозреваю, что ваш столбец сетки соответствует размеру текстового поля, но ваша DropShadowPanel просто обрезается или обрезается. Попробуйте установить ширину вашей DropShadowPanel равной 60 (это даст немного больше места для границ и градиентов вокруг текстового поля), а также заставит столбец подгоняться под ширину DropShadowPanel.

...