Я работаю в WPF, C #.
Я хочу иметь текстовое поле, которое может обрабатывать другие элементы управления, а не только текст.Я уже добился определенного прогресса, но этого недостаточно.Проблема, с которой я сталкиваюсь, заключается в том, что в моем настраиваемом текстовом поле нет каретки и выделения.
У меня есть следующий стиль для настраиваемого текстового поля:
<Style x:Key="CustomTextBox" TargetType="{x:Type local:CustomTextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomTextBox}">
<Grid>
<ContentPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Возможно, из-за шаблона нет каретки и нет выбора . Есть ли способ их поддержки? Мне пришлось создать шаблон, чтобы я мог отображать другие элементы управления (TextBox принимает только текст), например, такой:
А вот как я использую пользовательское текстовое поле
<local:CustomTextBox Grid.Row="0" Style="{StaticResource CustomTextBox}" Height="80" Focusable="True">
<local:CustomTextBox.Content>
<ContentControl Template="{StaticResource SquareRoot}">
<ContentControl Template="{StaticResource SquareRoot}">
<ContentControl Template="{StaticResource SquareRoot}">
<ContentControl Template="{StaticResource SquareRoot}">
<ContentControl Template="{StaticResource SquareRoot}">
255551
</ContentControl>
</ContentControl>
</ContentControl>
</ContentControl>
</ContentControl>
</local:CustomTextBox.Content>
</local:CustomTextBox>
CustomTextBox class
[ContentProperty("Content")]
internal sealed class CustomTextBox : TextBox
{
public FrameworkElement Content
{
get { return (FrameworkElement)GetValue(ContentProperty); }
set { SetValue(ContentProperty, value); }
}
public static readonly DependencyProperty ContentProperty =
DependencyProperty.Register("Content", typeof(FrameworkElement), typeof(CustomTextBox), new UIPropertyMetadata(null));
}
Я открыт длялюбые предложения.