记录在学习与制作WPF过程中遇到的解决方案。
焦点的控制,键盘事件触发,输入框的数字限制,异步措置惩罚惩罚,隐藏状态可用状态,自界说属性等等...
二、配置系统环境:win10
开发工具:Visual Studio 2017
开发语言:C#.WPF (MVVM框架)
三、自问自答1.焦点的控制;
配景:
焦点的使用一般用于输入框,切换业务成果时,需要焦点定位在指定输入框位置,便于用户操纵;使用MVVM框架开发后,对付前端控件的焦点控制未便挪用,控件绑定的都是方向于文本内容和事件,不像windowsFrom那般直接挪用控件的焦点属性;
解决方法:
1)自界说属性;
这种要领我不贴代码了,第二次从头编纂该文章时再增补关于自界说属性的挪用说明;
2)前端构造所需焦点,后端遍历;
在Grid的Style样式里面设置好需要安插焦点的触发器;
后期每次变动焦点前,都把所有焦点触发器设置为false,然后在变动指定的焦点为true;
2.1) 前端xaml代码
<Grid> <Grid.Style> <Style> <Style.Triggers> <DataTrigger Binding="{Binding TxtAFocus}" Value="True"> <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=TxtA}"/> </DataTrigger> <DataTrigger Binding="{Binding TxtBFocus}" Value="True"> <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=TxtB}"/> </DataTrigger> <DataTrigger Binding="{Binding TxtCFocus}" Value="True"> <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=TxtC}"/> </DataTrigger> </Style.Triggers> </Style> </Grid.Style> <StackPanel Margin="10"> <StackPanel Orientation="Horizontal"> <TextBox x:Name="TxtA" Text="" Width="100" Height="30" Tag="输入框A..." Style="{StaticResource TxbTrigger}"/> <TextBox x:Name="TxtB" Text="" Width="100" Height="30" Margin="5" Tag="输入框B..." Style="{StaticResource TxbTrigger}"/> <TextBox x:Name="TxtC" Text="" Width="100" Height="30" Tag="输入框C..." Style="{StaticResource TxbTrigger}"/> </StackPanel> <StackPanel Orientation="Horizontal"> <Button Content="焦点A" Width="80" Height="28" Command="{Binding BtnA}" Template="{StaticResource DefaultButton}" Foreground="White"/> <Button Content="焦点B" Width="80" Height="28" Command="{Binding BtnB}" Margin="20" Template="{StaticResource DefaultButton}" Foreground="White" /> <Button Content="焦点C" Width="80" Height="28" Command="{Binding BtnC}" Template="{StaticResource DefaultButton}" Foreground="White" /> </StackPanel> </StackPanel> </Grid>
2.2) 前端xaml的后台cs代码
DataContext = new FocusAppViewModel();
2.3) 后端ViewModel代码