有没有一种纯粹通过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 管理器下载它。
PreviewMouseDoubleClick
事件。<TextBox DockPanel.Dock="Top" Name="MyTextBox" AcceptsReturn="True" PreviewMouseDoubleClick="TextBoxSelectAll"/>
TextBox
的 TextBox.SelectedText 属性 设置为TextBox
中的文本。private void TextBoxSelectAll(object sender, MouseButtonEventArgs e) {
// Set the event as handled
e.Handled = true;
// Select the Text
(sender as TextBox).SelectAll();
}
Behaviour
做了同样的事情,在我的 XAML 中,选择文本直接与双击动作相关联。在你的 XAML 中,你添加了 Behaviour
来附加事件。同样的事情,我的方法似乎更简单。 - Bob.TextBox.Text
更改为其他内容)不同。 - Bob.