鼠标输入时,WPF文本框边框会改变颜色(WPF text box border changes color upon mouse entry)

出于某种原因,只要鼠标悬停在文本框上,我的文本框边框就会将颜色更改为输出蓝色。 这是我的xaml:

<TextBox 
   BorderThickness="1" 
   BorderBrush="Black" 
   x:Name="textBox" 
   custom:ScrollToEndBehavior.OnTextChanged="True" 
   VerticalScrollBarVisibility="Auto" 
   HorizontalAlignment="Center" 
   Height="154" 
   Margin="32,220,36,5" 
   TextWrapping="Wrap" 
   Text="{Binding LogText, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"  
   Width="449" 
   Background="WhiteSmoke" 
   Visibility="{Binding Path=IsLogVisible, Converter={StaticResource BoolToVis}}" 
   IsReadOnly="True"/>

For some reason my text box border is changing color to an offputting blue whenever the mouse hovers over the text box. here is my xaml:  
 <TextBox 
   BorderThickness="1" 
   BorderBrush="Black" 
   x:Name="textBox" 
   custom:ScrollToEndBehavior.OnTextChanged="True" 
   VerticalScrollBarVisibility="Auto" 
   HorizontalAlignment="Center" 
   Height="154" 
   Margin="32,220,36,5" 
   TextWrapping="Wrap" 
   Text="{Binding LogText, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"  
   Width="449" 
   Background="WhiteSmoke" 
   Visibility="{Binding Path=IsLogVisible, Converter={StaticResource BoolToVis}}" 
   IsReadOnly="True"/>
更新时间:2022-06-15 08:06
最满意答案
 使用IsMouseOver触发器将默认样式更改为黑色:  
<Style TargetType="TextBox">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TextBox">
                    <Border BorderThickness="{TemplateBinding Border.BorderThickness}"
                  BorderBrush="{TemplateBinding Border.BorderBrush}"
                  Background="{TemplateBinding Panel.Background}"
                  Name="border"
                  SnapsToDevicePixels="True">
                        <ScrollViewer HorizontalScrollBarVisibility="Hidden"
                           VerticalScrollBarVisibility="Hidden"
                           Name="PART_ContentHost"
                           Focusable="False" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="UIElement.IsMouseOver" Value="True">
                            <Setter Property="Border.BorderBrush" TargetName="border" 
                    Value="Black"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Change the default style to black with a IsMouseOver trigger: 
<Style TargetType="TextBox">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TextBox">
                    <Border BorderThickness="{TemplateBinding Border.BorderThickness}"
                  BorderBrush="{TemplateBinding Border.BorderBrush}"
                  Background="{TemplateBinding Panel.Background}"
                  Name="border"
                  SnapsToDevicePixels="True">
                        <ScrollViewer HorizontalScrollBarVisibility="Hidden"
                           VerticalScrollBarVisibility="Hidden"
                           Name="PART_ContentHost"
                           Focusable="False" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="UIElement.IsMouseOver" Value="True">
                            <Setter Property="Border.BorderBrush" TargetName="border" 
                    Value="Black"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过绑定实现,具体步骤如下: 1. 在 XAML 中定义文本框和数据表格。 ```xml <TextBox x:Name="textBox" Text="{Binding ParameterValue}"/> <DataGrid x:Name="dataGrid" ItemsSource="{Binding Data}" AutoGenerateColumns="True"/> ``` 2. 在 View Model 中定义数据和参数的属性,并在构造函数中订阅参数变化事件。 ```csharp public class MyViewModel : INotifyPropertyChanged { private string _parameterValue; public string ParameterValue { get { return _parameterValue; } set { if (_parameterValue != value) { _parameterValue = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(ParameterValue))); } } } private DataTable _data; public DataTable Data { get { return _data; } set { if (_data != value) { _data = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Data))); } } } public MyViewModel() { // 订阅参数变化事件 textBox.TextChanged += TextBox_TextChanged; // 初始化数据 Data = new DataTable(); Data.Columns.Add("Column1", typeof(string)); Data.Columns.Add("Column2", typeof(string)); Data.Rows.Add("Row1", "Value1"); Data.Rows.Add("Row2", "Value2"); } private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { // 根据参数值更新数据 string parameterValue = textBox.Text; foreach (DataRow row in Data.Rows) { row["Column2"] = parameterValue + " " + row["Column1"]; } } public event PropertyChangedEventHandler PropertyChanged; } ``` 3. 在窗口代码中将 View Model 绑定到 DataContext,并启动窗口。 ```csharp public partial class MainWindow : Window { private MyViewModel _viewModel; public MainWindow() { InitializeComponent(); _viewModel = new MyViewModel(); DataContext = _viewModel; } } ``` 这样,当文本框的值发生变化,数据表格的参数就根据文本框的值改变

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值