純粋に XAML を使用してテキスト ボックス内のすべてのテキストを強調表示する方法はありますか、それとも Xaml.cs で行う必要がありますか
ありがとう!
これはあなたがやろうとしていることです:
まず、DoubleClickBehavior.cs
プロジェクトにクラスを追加します。
class DoubleClickBehavior : Behavior<TextBox>
{
protected override void OnAttached()
{
AssociatedObject.MouseDoubleClick += AssociatedObjectMouseDoubleClick;
base.OnAttached();
}
protected override void OnDetaching()
{
AssociatedObject.MouseDoubleClick -= AssociatedObjectMouseDoubleClick;
base.OnDetaching();
}
private void AssociatedObjectMouseDoubleClick(object sender, RoutedEventArgs routedEventArgs)
{
AssociatedObject.SelectAll();
}
}
次に、.xaml
この動作を TextBox に追加します。
<TextBox>
<i:Interaction.Behaviors>
<local:DoubleClickBehavior/>
</i:Interaction.Behaviors>
</TextBox>
ビヘイビアーを使用するには、2 つの名前空間を に追加する必要があり.xaml
ます。(私のプロジェクトの名前は だったWpfApplication1
ので、おそらく変更する必要があります):
xmlns:local ="clr-namespace:WpfApplication1"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
それでおしまい。また、クラスSystem.Windows.Interactivity.dll
を使用する必要があります。Behavior
Nuget Package Managerからダウンロードできます。
PreviewMouseDoubleClick
TextBox を使用すると、イベントを追加できます。
<TextBox DockPanel.Dock="Top" Name="MyTextBox" AcceptsReturn="True" PreviewMouseDoubleClick="TextBoxSelectAll"/>
次に、 のTextBox.SelectedText プロパティをTextBox
のテキストに設定しますTextBox
。
private void TextBoxSelectAll(object sender, MouseButtonEventArgs e) {
// Set the event as handled
e.Handled = true;
// Select the Text
(sender as TextBox).SelectAll();
}