C# 我做错了什么?在构造函数中使用依赖项属性的值
我在使用依赖属性时遇到了一些问题。我想使用DP的值来初始化构造函数中的对象 问题是月份总是0(在构建期间),这导致ExpenseDetailPageDataModel的初始化错误。构造函数完成工作后,变量月的值立即更改为正确的值(在本例中为11) FinanceItemViewControl是一个自定义用户控件C# 我做错了什么?在构造函数中使用依赖项属性的值,c#,xaml,microsoft-metro,windows-runtime,winrt-xaml,C#,Xaml,Microsoft Metro,Windows Runtime,Winrt Xaml,我在使用依赖属性时遇到了一些问题。我想使用DP的值来初始化构造函数中的对象 问题是月份总是0(在构建期间),这导致ExpenseDetailPageDataModel的初始化错误。构造函数完成工作后,变量月的值立即更改为正确的值(在本例中为11) FinanceItemViewControl是一个自定义用户控件 <common:FinanceItemViewControl Grid.Column="2" Month="11"/> 您不能将该逻辑放入构造函数中,因为正如您所注意到的,
<common:FinanceItemViewControl Grid.Column="2" Month="11"/>
您不能将该逻辑放入构造函数中,因为正如您所注意到的,数据上下文尚未加载。您可以做以下两件事之一:
MonthProperty\u Changed
事件中加载的事件:
public sealed partial class FinanceItemViewControl : UserControl
{
...
public static readonly DependencyProperty MonthProperty = DependencyProperty.Register
(
"Month",
typeof(int),
typeof(FinanceItemViewControl),
new PropertyMetadata(
0, new PropertyChangedCallback(MonthProperty_Changed))
);
public int Month
{
get { return (int)GetValue(MonthProperty); }
set { SetValue(MonthProperty, value); }
}
#endregion
private static void MonthProperty_Changed(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
//TODO: trigger data reload
}
public FinanceItemViewControl()
{
this.InitializeComponent();
...
Debug.WriteLine("Constructor: " + Month);
detailPageDataModel = new ExpenseDetailPageDataModel(Month);
...
}
public FinanceItemViewControl()
{
this.InitializeComponent();
detailPageDataModel = new ExpenseDetailPageDataModel(Month);
this.Loaded += UserControl_Loaded;
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Constructor: " + Month);
}