访问用户控制代码中的绑定上下文
Accessing bound context in user controls code behind
问题很像 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;
}
...
来自parent的xaml:
...
<controls:TowerControl Grid.Row="1" Grid.Column="0" x:Name="Tower" DataContext="{Binding Tower}" />
...
Parent 型号:
...
public TowerBase Tower { get; set; }
...
那是因为 UserControl's
DataContext
在构造函数中时不会被设置。收听用户控件的 Loaded
事件,在处理程序中您将获得 DataContext
<UserControl Loaded="UserControl_Loaded">
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
var x = this.DataContext;
}
问题很像 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;
}
...
来自parent的xaml:
...
<controls:TowerControl Grid.Row="1" Grid.Column="0" x:Name="Tower" DataContext="{Binding Tower}" />
...
Parent 型号:
...
public TowerBase Tower { get; set; }
...
那是因为 UserControl's
DataContext
在构造函数中时不会被设置。收听用户控件的 Loaded
事件,在处理程序中您将获得 DataContext
<UserControl Loaded="UserControl_Loaded">
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
var x = this.DataContext;
}