c# - 单击按钮时,如何防止 TextBox 的“IsFocus”属性变为“false”...?
问题描述
我的 mvvm 项目有问题。我想为每个文本框输入一个值,我怎么知道要为哪个文本框输入一个值?我使用背景来知道哪个文本框是焦点。比如我想在textbox1中输入值12,我会点击textbox1然后点击button1和button2,textBox1的“content”属性会是12,(注意我没有使用编辑光标,我有很多文本框)。但是当按下按钮时,文本框的“IsFocus”属性更改为“false”(我认为)。(我刚开始,我的英语不是那么好)。这是我的 xaml 代码。
<Window x:Class="ListViewWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ListViewWPF"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
<Window.Resources>
<Style x:Key="RedTextBoxStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="IsFocused" Value="true">
<Setter Property="Background" Value="RosyBrown"/>
<Setter Property="IsReadOnly" Value="True"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition ></ColumnDefinition>
<ColumnDefinition ></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<ListView x:Name="DataView" ItemsSource="{Binding Mydata}" SelectedItem="{Binding SelectedItems}" Margin="0,0,0,73.667" Grid.RowSpan="2">
</ListView>
<TextBox Text="TextBoxA" Style="{StaticResource RedTextBoxStyle}" FontSize="25" Grid.Row="0" Grid.Column="1" Margin="20"></TextBox>
<TextBox Text="TextBoxB" Style="{StaticResource RedTextBoxStyle}" FontSize="25" Grid.Row="1" Grid.Column="1" Margin="20"></TextBox>
<Button Grid.Row="0" Grid.Column="2" Margin="20" Content="1" FontSize="25"></Button>
<Button Grid.Row="1" Grid.Column="2" Margin="20" Content="2" FontSize="25"></Button>
</Grid>
</Window>
我希望收到您的意见!
解决方案
我不确定我是否完全理解您的要求,但是:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition ></ColumnDefinition>
<ColumnDefinition ></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<ListView x:Name="DataView" ItemsSource="{Binding Mydata}" SelectedItem="{Binding SelectedItems}" Margin="0,0,0,73.667" Grid.RowSpan="2">
</ListView>
<StackPanel Grid.Row="0" Grid.Column="1" FocusManager.IsFocusScope="True">
<TextBox Text="TextBoxA" Style="{StaticResource RedTextBoxStyle}" FontSize="25" Grid.Row="0" Grid.Column="1" Margin="20"></TextBox>
<TextBox Text="TextBoxB" Style="{StaticResource RedTextBoxStyle}" FontSize="25" Grid.Row="1" Grid.Column="1" Margin="20"></TextBox>
</StackPanel>
<Button Grid.Row="0" Grid.Column="2" Margin="20" Content="1" FontSize="25"></Button>
<Button Grid.Row="1" Grid.Column="2" Margin="20" Content="2" FontSize="25"></Button>
</Grid>
这里的想法是创建焦点范围,即逻辑焦点遍历的范围。换句话说,如果您希望在按钮接收焦点时保持其中一个文本框保持焦点,则:文本框和按钮必须属于不同的焦点范围。
它回答了你的担忧吗?
推荐阅读
- javascript - ReactJS 水平时间轴组件
- javascript - ReactJS 一次性初始化
- qt - 在 Qt Creator 中自动重建依赖项
- python - 将索引附加到 laspy 文件 (.las)
- yii2 - 如何将值从数据库传递到kartik复选框列表
- mysql - 在 Laravel 中,我想将列类型从 varchar 更改为 double 它会给出错误。但是在创建列时它可以正常工作
- android - 更改 xml 时预览不更新
- asp.net - 发布到 IIS 7 后,Web Api 2 Post 方法生成内部服务器错误?我该怎么办?
- android - 如何使用活动结果将图像从片段上传到 Firebase?(科特林)
- c# - 接收到的静态串行数据中的非静态控制c#