问题很像this question - 只是没有为我做好准备
那么如何通过后面的控制代码访问通过Parent的Xaml绑定的WPF用户控件上的属性?
PS:绑定到传入的TowerBase模型的属性的其他控件是绑定。 (我只是无法访问后面代码中传入的模型)。
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; }
...
答案 0 :(得分:3)
这是因为UserControl's
DataContext
在构造函数中不会被设置。收听用户控制的Loaded
事件,在处理程序中,您将获得DataContext
<UserControl Loaded="UserControl_Loaded">
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
var x = this.DataContext;
}