Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我做错了什么?在构造函数中使用依赖项属性的值_C#_Xaml_Microsoft Metro_Windows Runtime_Winrt Xaml - Fatal编程技术网

C# 我做错了什么?在构造函数中使用依赖项属性的值

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"/> 您不能将该逻辑放入构造函数中,因为正如您所注意到的,

我在使用依赖属性时遇到了一些问题。我想使用DP的值来初始化构造函数中的对象

问题是月份总是0(在构建期间),这导致ExpenseDetailPageDataModel的初始化错误。构造函数完成工作后,变量月的值立即更改为正确的值(在本例中为11)

FinanceItemViewControl是一个自定义用户控件

<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);
    }