0
点赞
收藏
分享

微信扫一扫

进程间通信(27000字超详解)

拾光的Shelly 2024-06-01 阅读 6
wpfc#prism

登录数据绑定

1.首先在LoginViewModel 登录逻辑处理类中,创建登录要绑定属性和命令

public class LoginViewModel : BindableBase, IDialogAware
{
    public LoginViewModel()
    {
        ExecuteCommand = new DelegateCommand<string>(Execure);
    }
    public string Title { get; set; } = "ToDo"; //设置窗口标题

    public event Action<IDialogResult> RequestClose;

    public DelegateCommand<string> ExecuteCommand { get; private set; }

    private string account;
    /// <summary>
    /// 账户
    /// </summary>
    public string Account
    {
        get { return account; }
        set { account = value; RaisePropertyChanged(); }
    }
    private string passWord;
    /// <summary>
    /// 密码
    /// </summary>
    public string PassWord
    {
        get { return passWord; }
        set { passWord = value; RaisePropertyChanged(); }
    }


    public bool CanCloseDialog()
    {
        return true;
    }

    public void OnDialogClosed()
    {
       
    }

    public void OnDialogOpened(IDialogParameters parameters)
    {
        
    }
    private void Execure(string obj)
    {
        switch (obj)
        {
            case "Login":
                Login();
                break;
            case "LoginOut":
                LoginOut();
                break;
        }
    }
    void Login()
    {

    }
    void LoginOut()
    {

    }
}

2.属性和命令创建完成后,在前端LoginView.xaml 中,需要对登录按钮和输入框进行绑定后台对应的属性以及命令(进行数据绑定)

 2.1 创建密码框附加属性类(PassWordExtensions)

2.2 密码输入框 (PasswordBox) 中绑定附加属性类

 3. LoginView.xaml 完整示例代码

<UserControl x:Class="MyToDo.Views.Dialog.LoginView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:MyToDo.Views.Dialog"
             xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
             xmlns:prism="http://prismlibrary.com/"
             xmlns:pass="clr-namespace:MyToDo.Extensions"
             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
             mc:Ignorable="d" 
             Height="350" Width="600">
    <!--修改外观样式-->
    <prism:Dialog.WindowStyle>
        <Style TargetType="Window">
            <Setter Property="Width" Value="600"/>
            <Setter Property="Height" Value="350"/>
            <Setter Property="SizeToContent" Value="WidthAndHeight"/> <!--设置当前窗口大小-->
            <Setter Property="ResizeMode" Value="NoResize"/> <!--不允许调整窗口大小-->
            <Setter Property="prism:Dialog.WindowStartupLocation" Value="CenterScreen"/> <!--窗口启动位置-->
        </Style>
    </prism:Dialog.WindowStyle>
    <Grid Background="White">
        <!--界面分左右两列-->
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1.5*"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

        <Image Source="/Images/login.png" Margin="50"/>

        <DockPanel Grid.Column="1" VerticalAlignment="Center" Margin="15">
            <TextBlock Text="欢迎使用" FontSize="22" FontWeight="Bold" Margin="0,10" DockPanel.Dock="Top"/>

            <TextBox Margin="0,10" md:HintAssist.Hint="请输入账号" DockPanel.Dock="Top"
                     Text="{Binding Account}"/>
            <PasswordBox Margin="0,10" md:HintAssist.Hint="请输入密码" DockPanel.Dock="Top"
                       pass:PassWordExtensions.PassWord="{Binding PassWord,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
                <!--添加密码行为-->
                <i:Interaction.Behaviors>
                    <pass:PassWordBehavior/>
                </i:Interaction.Behaviors>
            </PasswordBox>
            <Button Content="登录系统" DockPanel.Dock="Top" 
                    Command="{Binding ExecuteCommand}" CommandParameter="Login"/>

            <DockPanel LastChildFill="False" Margin="0,10">
                <TextBlock Text="注册账户"/>
                <TextBlock Text="忘记密码?" DockPanel.Dock="Right"/>
            </DockPanel>
        </DockPanel>
    </Grid>
</UserControl>
举报

相关推荐

0 条评论