代码之家  ›  专栏  ›  技术社区  ›  Sarah Vessels

相同区域的WPF窗的干燥C#

  •  0
  • Sarah Vessels  · 技术社区  · 14 年前

    我的WPF应用程序中有两个窗口:一个登录窗口和一个选项窗口。两者都具有相同的表单,其中包含用户名和密码字段,以及用于提供凭据的其他一些字段。我想要一些代码知道会有一个 txt_userName TextBox 例如,可用,并且可以在此基础上进行操作。我在想我能做点什么 IHaveCredentialsForm 接口,两者兼有 LoginWindow OptionsWindow

    interface IHaveCredentialsForm
    {
        TextBox txt_userName { get; set; }
    }
    

    我想我出错是因为 登录窗口 partial 继承自的类 Window 文本框 txt\U用户名 ,尽管我还没有明确定义这样的属性。它神奇地出现在 文本框

    string 用户名、密码等的值,但传入两个不同的类似乎是多余的 txt_userName.Text, pwb_password.Password, ...

    当我在做的时候,我怎么能在两个不同的窗口之间共享一块XAML(凭证表单)?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Darin Dimitrov    14 年前

    你可以把这个擦干 creating 可重复使用的 user control 你可以把它放在两个表格上。

        2
  •  1
  •   Community CDub    7 年前

    我将把逻辑从后面的代码中移到一个单独的类中。然后使用数据绑定将类中的属性链接到UI中的文本框。

    比如:

    //ViewModel class
    public class UserViewModel
    {
        public string Username { get; set; }
        public string Password { get; set; }
    }
    
    <!--View XAML-->
    <TextBox x:Name="txt_username" Text="{Binding Username}" />
    <TextBox x:Name="txt_password" Text="{Binding Password}" />
    

    这不仅可以阻止您重复自己的操作,而且是一种很好的实践,因为它将允许您独立于UI测试业务逻辑代码。

    对于WPF,这种编程类型的流行设计是MVVM模式。有一个问题 here 这将帮助您掌握基础知识,并在更广泛的网络上提供大量教程。

    将所有逻辑移出后,可以创建一个UserControl,其中包含两个文本框(及其绑定)的XMAL,这两个文本框可以在两个视图中使用,这样就不会重复了。


    此方法的几个简要说明: