Я хочу отключить выделение текста в текстовом поле, предпочтительно используя стиль. Причина в том, что у меня есть стиль, который делает текстовое поле похожим на текстовый блок, пока не будет выполнен определенный критерий (IsRenaming). Это узлы дерева, поэтому я не хочу, чтобы пользователь мог выбирать текст. Вот стиль:
<Style x:Key="TextBlockStyleForTextBox" TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="IsReadOnly" Value="True" />
</Style>
<Style x:Key="RenamingTextBox" TargetType="{x:Type TextBox}" BasedOn="{StaticResource TextBlockStyleForTextBox}">
<Setter Property="Cursor" Value="Arrow"/>
<Setter Property="Padding" Value="0" />
<Setter Property="Margin" Value="0" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsRenaming}" Value="true">
<DataTrigger.Setters>
<Setter Property="TextBox.IsReadOnly" Value="False" />
<Setter Property="Cursor" Value="IBeam" />
<Setter Property="Background" >
<Setter.Value>
<SolidColorBrush Color="{DynamicResource WhiteColor}"/>
</Setter.Value>
</Setter>
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Padding" Value="2" />
<Setter Property="FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource Self}}"/>
<Setter Property="behaviors:TextBoxBehavior.SelectAll" Value="True"/>
</DataTrigger.Setters>
</DataTrigger>
</Style.Triggers>
</Style>
Я не думаю, что где-либо переопределяю IsReadOnly. Вот мое определение текстового поля:
<DataTemplate x:Key="MyTemplate" >
<TextBox Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=TreeView}}"
Style="{StaticResource RenamingTextBox}">
... и т.д