有没有办法纯粹通过 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>
您需要添加两个命名空间来.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下载它。
使用 TextBox,您可以添加PreviewMouseDoubleClick
事件。
<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();
}