Я хотел бы узнать, можно ли изменять размер XAML TextBox
во время выполнения и через взаимодействие с пользователем. То есть пользователь использует ручки для ручного изменения размера TextBox
по мере необходимости. Хотя TextBox
, похоже, имеет событие sizeChanged
, я не могу понять, как я могу изменить размер вручную во время выполнения.Как изменить размер текстового поля XAML во время выполнения через взаимодействие с пользователем?
Как изменить размер текстового поля XAML во время выполнения через взаимодействие с пользователем?
ответ
Ahmad,
Есть 2 решения, которые у меня есть для вас.
Решение 1:
Простое, авансовые решение может быть с помощью сетки разветвителей, который помогает вам в перетащить & изменение размера элемента управления. Количество разделителей сетки зависит от способа изменения размера TextBox. Ниже приведен пример кода:
<Grid>...
<GridSplitter Grid.Row="1" Grid.ColumnSpan="2" ResizeDirection="Rows" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Height="4" BorderThickness="0,0,0,1" BorderBrush="Gray" Background="Transparent"/>
<TextBox Grid.Row="2" Grid.Column="0" Margin="6,6,6,6" Name="RequestTextBox" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" Text="{Binding Request, Mode=TwoWay}"/>
<GridSplitter Grid.Row="2" Grid.ColumnSpan="2" ResizeDirection="Rows" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Height="4" BorderThickness="0,0,0,1" BorderBrush="Gray" Background="Transparent"/>
...</Grid>
Примечание: Вы можете также положить 4 сетки разветвители, чтобы изменить размер текстового поля из 4-х направлениях, но хэдз вверх, что вы, возможно, придется определить DragCompleted событие на GridSplitter (ов) регулировать ширину & высоты.
Решение 2:
Кроме того, вы можете сделать это с Adorner. Ниже представлена серия из четырех частей по этой теме без и с помощью Adorners:
P.S: Я не суммировал то, что передают ссылки, поскольку тема сама по себе настолько обширна. Поэтому советуем вам проверять ссылки. Только в случае, если ссылки идут мертвые, погуглить графических элементов не должен быть слишком жестким;)
Только WPF имеет adorners, а не WinRT. – WiredPrairie
@WiredPrairie: Мой плохой. Помогло бы решение решетки сетки? – Ankit
Он также не обращается к исходному запросу. В простейшем из UI он будет работать. – WiredPrairie
Вот XAML для создания эффекта :
<Grid x:Name="MyTextBox" Width="250"
MinWidth="250" MinHeight="60"
Margin="20" HorizontalAlignment="Left"
VerticalAlignment="Top">
<Grid.Resources>
<Style TargetType="Polygon">
<Setter Property="Fill" Value="{ThemeResource SystemControlBackgroundAltHighBrush}" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="IsHitTestVisible" Value="False" />
<Setter Property="RenderTransform">
<Setter.Value>
<CompositeTransform TranslateX="5" TranslateY="5" />
</Setter.Value>
</Setter>
<Setter Property="RenderTransformOrigin" Value="0.5,0.5" />
<Setter Property="Stroke" Value="{ThemeResource SystemControlForegroundChromeDisabledLowBrush}" />
<Setter Property="StrokeThickness" Value="{ThemeResource TextControlBorderThemeThickness}" />
<Setter Property="VerticalAlignment" Value="Bottom" />
</Style>
<Style TargetType="TextBox">
<Setter Property="AcceptsReturn" Value="True" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="VerticalAlignment" Value="Stretch" />
</Style>
<Style TargetType="Thumb">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="Height" Value="30" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="RenderTransform">
<Setter.Value>
<CompositeTransform TranslateX="10" TranslateY="10" />
</Setter.Value>
</Setter>
<Setter Property="VerticalAlignment" Value="Bottom" />
<Setter Property="Width" Value="30" />
</Style>
</Grid.Resources>
<TextBox Header="First Name" Text="Jerry" />
<Thumb DoubleTapped="GrabDoubleTapped" DragDelta="GrabDelta" Loaded="GrabLoaded" />
<Polygon Points="0,19 19,0, 19,19" />
</Grid>
А вот код-позади, чтобы справиться с этим:
Windows.Foundation.Size originalSize;
private void GrabLoaded(object sender, RoutedEventArgs e)
{
originalSize = MyTextBox.RenderSize;
}
private void GrabDelta(object sender, Windows.UI.Xaml.Controls.Primitives.DragDeltaEventArgs e)
{
MyTextBox.Width = MyTextBox.ActualWidth + e.HorizontalChange;
MyTextBox.Height = MyTextBox.ActualHeight + e.VerticalChange;
}
private void GrabDoubleTapped(object sender, Windows.UI.Xaml.Input.DoubleTappedRoutedEventArgs e)
{
MyTextBox.Height = originalSize.Height;
MyTextBox.Width = originalSize.Width;
}
Вы можете легко обернуть это в элемент управления или контроля пользователя или что-то. Конечно.
выглядит так:
удачи!
- 1. Невозможно изменить размер текстового поля во время выполнения
- 2. Разрешить пользователю изменять размер текстового поля во время выполнения
- 3. Взаимодействие с пользователем во время выполнения с MPAndroidChart
- 4. Почему размер текстового поля увеличивается автоматически во время выполнения?
- 5. Как изменить размер ChartArea во время выполнения
- 6. Как изменить размер просмотров во время выполнения
- 7. Как изменить размер ngDialog во время выполнения
- 8. Размер текстового поля во Flash
- 9. Создание текстового поля во время выполнения
- 10. Изменить размер шрифта приложения во время выполнения
- 11. Как изменить размер текстового поля?
- 12. Как увеличить высоту текстового поля во время выполнения?
- 13. Изменить размер VideoView во время выполнения
- 14. Как установить поля во время выполнения?
- 15. Изменить поля GraphQLObjectType во время выполнения
- 16. Загрузка XAML во время выполнения
- 17. Загрузка XAML во время выполнения?
- 18. Как установить текст текстового поля полужирным шрифтом во время выполнения?
- 19. проблема во время проверки текстового поля после
- 20. Java: Как я могу изменить размер JPanel во время выполнения?
- 21. Как XAML компиляции работает во время выполнения
- 22. Изменить размер многострочного текстового поля
- 23. Как удалить инвалид атрибут из текстового поля во время выполнения
- 24. Изменить SelectedValuePath во время выполнения
- 25. изменить размер шрифта текстового поля
- 26. Изменение цвета XAML SVG во время выполнения
- 27. Как изменить шаблон Silverlight во время выполнения?
- 28. Crystal Reports, как изменить размер бумаги во время выполнения?
- 29. Размер UIButton с Autolayout во время выполнения
- 30. Как изменить класс текстового поля?
Почему вы не можете установить ширину и высоту во время выполнения? – WiredPrairie
Возможный дубликат [Изменение размера элемента управления в приложении для хранилища Windows] (http://stackoverflow.com/questions/15607618/resizing-a-control-in-windows-store-app) –
Обычно считается вежливым, чтобы отметить правильный ответ. –