Caliburn Micro和Dependency Properties绑定不起作用

时间:2013-03-18 08:37:20

标签: windows-8 user-controls windows-runtime dependency-properties caliburn.micro

我正在创建一个在其页面中具有用户控件的WinRt应用程序,而我正在将MVVM与Caliburn Micro一起使用。在用户控件中,我有一个依赖项属性,我在视图模型中绑定到一个集合,但绑定不起作用,至少在我更改模拟器的rezolution之前。我进入调试模式,用户控件的数据上下文为空,但是当我更改rezolution并在“SizeChanged”事件中点击断点时,我可以看到我的用户控件已正确绑定。现在我不知道造成这种延迟的原因是什么,因为它应该在页面加载时绑定,但事实并非如此。 代码是这样的:

MyPage.xaml

<MyControl Users="{Binding MyUsersCollection, Mode=TwoWay}"></MyControl>

MyControl.xaml.cs

public ObservableCollection<User> Users
    {
        get { return (ObservableCollection<User>)GetValue(UsersProperty); }
        set
        {
            SetValue(UsersProperty, value);
            LoadInfo();
        }
    }

    public static readonly DependencyProperty UsersProperty =
        DependencyProperty.Register("Users", typeof(ObservableCollection<User>), typeof(MojoMap), new PropertyMetadata(new ObservableCollection<User>()));

你能帮我弄清楚这里有什么问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

public ObservableCollection<User> Users
{
    get { return (ObservableCollection<User>)GetValue(UsersProperty); }
    set
    {
        SetValue(UsersProperty, value);
    }
 }
 public static readonly DependencyProperty UsersProperty =
    DependencyProperty.Register("Users", typeof(ObservableCollection<User>), typeof(MojoMap), new PropertyMetadata(null, UsersChanged));

private static void UsersChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
    ((MojoMap) dependencyObject).LoadInfo();
}