【问题标题】:WPF User Control Binding get dataWPF用户控件绑定获取数据
【发布时间】:2012-06-28 21:27:58
【问题描述】:

我是 WPF 和绑定东西的新手。我试图找到解决问题的方法,但仍然缺少一些东西;/ 我想从 UserControl 中的 TextBox 获取数据并将其放入主窗口中的属性中,在它工作的路上,但其他不是;/

我有一个简单的课程

public class User
{
    public string Name {get; set;}
    public string Age {get; set;}
}

还有一个名为 UserDetails 的简单用户控件,带有两个文本框

<TextBox Text="{Bind Name}" />
<TextBox Text="{Bind Age}" />

UserDetails UC 像这样放置在主窗口中:

<uc:UserDetails DataContext="{Binding User, Mode=TwoWay}" />

在 MainWindow ViewModel 我有一个属性

public User User { get; set;}

在 MainWindow 上还有一个按钮,单击该按钮应使用来自 UserDetials UC 的数据填充 User 属性。 现在已经很晚了,我需要在早上完成,所以任何直接的解决方案都将不胜感激。

任何想法如何做到这一点?上面的例子很简单,但是如果你能告诉我怎么做,我可以处理我剩下的问题。

【问题讨论】:

  • 你能显示截图吗?如果您像这样绑定,则无需单击按钮以使用来自 UserControl 的详细信息填充“用户”。您应该直接将 User 绑定到 usercontrol,当您更改文本框中的文本时,User 上的属性将立即更改
  • 需要该按钮才能从用户属性中获取数据并将其保存在数据库中。但总是当我填充两个文本框并单击按钮时,用户属性为空。很难发布任何屏幕截图,因为我的应用程序比上面的示例要复杂得多,但问题是一样的。
  • @suleks 这不是一个免费的代码工厂,您可以在其中陈述问题并期望 SO 的优秀用户以完整的代码解决方案做出响应,因为您需要完成任务并且需要它早晨。我们会提供帮助,通常是代码示例或有用的链接,但这种请求会以错误的方式惹恼 SO 用户。

标签: wpf binding user-controls


【解决方案1】:

这里有一些事情可以尝试:

  • 确保将视图模型设置为 MainWindow 的 DataContext。即使您没有为视图模型使用单独的类而只是使用代码隐藏,您也需要分配 DataContext。
  • 这可能只是一个错字,但在你的文本框中,你写了{Bind Name},而它应该是{Binding Path=Name, Mode=TwoWay},对于时代也是如此。您需要在属性上将绑定模式设置为两种方式,而不是像您在示例中那样设置在类上。

【讨论】:

    【解决方案2】:

    您需要实现 INotifyPropertyChanged 接口并在属性设置器中触发 PropertyChanged 事件。您需要为您的 MainViewModelUser 课程执行此操作。这是如何完成的example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      相关资源
      最近更新 更多