记录在学习与制作WPF过程中遇到的解决方案

时间:2022-01-04 05:23:14

  记录在学习与制作WPF过程中遇到的解决方案。

   焦点的控制,键盘事件触发,输入框的数字限制,异步措置惩罚惩罚,隐藏状态可用状态,自界说属性等等...

二、配置

系统环境:win10

开发工具:Visual Studio 2017

开发语言:C#.WPF (MVVM框架)

三、自问自答

  1.焦点的控制;

  配景:

  焦点的使用一般用于输入框,切换业务成果时,需要焦点定位在指定输入框位置,便于用户操纵;使用MVVM框架开发后,对付前端控件的焦点控制未便挪用,控件绑定的都是方向于文本内容和事件,不像windowsFrom那般直接挪用控件的焦点属性;

  解决方法:

1)自界说属性;

  这种要领我不贴代码了,第二次从头编纂该文章时再增补关于自界说属性的挪用说明;

  

2)前端构造所需焦点,后端遍历;

  在Grid的Style样式里面设置好需要安插焦点的触发器;

  后期每次变动焦点前,都把所有焦点触发器设置为false,然后在变动指定的焦点为true;

2.1) 前端xaml代码

记录在学习与制作WPF过程中遇到的解决方案

<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代码