【问题标题】:Accessing bound context in user controls code behind在用户控件代码中访问绑定上下文
【发布时间】:2016-07-26 09:25:41
【问题描述】:

问题很像this question- 只是没有为我解决

那么如何从后面的控件代码访问通过 Parent 的 Xaml 绑定的 WPF 用户控件上的属性?

PS:绑定到传入的 TowerBase 模型的 Properties 的其他控件是绑定的。 (我就是无法访问后面代码中传入的模型)。

UserControl: x 和 y 为空,我不知道为什么

public partial class TowerControl : UserControl
{
    public TowerBase model = new TowerBase(); //Trying to set this model

    public TowerControl()
    {
        InitializeComponent();
        var x = ((TowerBase)this.DataContext); //Or Extract from binding
        var y = model;
    }
    ...

来自父母的 xaml:

    ...
    <controls:TowerControl Grid.Row="1" Grid.Column="0" x:Name="Tower" DataContext="{Binding Tower}" />
    ...

父模型:

    ...
    public TowerBase Tower { get; set; }
    ...

【问题讨论】:

    标签: wpf binding user-controls code-behind custom-object


    【解决方案1】:

    这是因为 UserControl's DataContext 在构造函数中时不会被设置。收听用户控制的Loaded 事件,在处理程序中您将获得DataContext

    <UserControl Loaded="UserControl_Loaded">
    
    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        var x = this.DataContext;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多