问题从XAML传递参数

时间:2011-09-08 05:45:22

标签: c# wpf silverlight xaml mvvm

我的要求是将自定义UserControl显示为弹出窗口。我试图使用this方法在Silverlight / MVVM中实现它。但我无法找到一种方法可以将一些参数传递给我的弹出窗口。我通过this方法来实现它,但它在某种程度上无法正常工作。

这就是我的XAML的样子:

View1中按钮的行为。点击此按钮,我打开一个弹出窗口View2:

<cmds:PopupBehavior.CustomUI>
<views:View2 CategoryID="{Binding CategoryID, Mode=TwoWay}"/>
</cmds:PopupBehavior.CustomUI>

CategoryID是View2的依赖属性,并且绑定到View1视图模型中的同名属性。但由于某些原因,我总是在View2中将CategoryID设为0,即使它已在我的View1视图模型中正确设置。

我哪里错了?

编辑:

以下是View2的依赖项属性代码:

public static readonly DependencyProperty CategoryIDProperty = DependencyProperty.Register
("CategoryID",typeof(int),typeof(View2),new PropertyMetadata(0));

public int CategoryID
{
       get { return (int)GetValue(CategoryIDProperty); }
       set { SetValue(CategoryIDProperty, value); }
}

由于某种原因,不会调用属性的setter。

1 个答案:

答案 0 :(得分:0)

这必须是第一个视图上的绑定问题,将代码更改为以下内容以进行测试并查看是否:

cmds:PopupBehavior.CustomUI> 
    <views:View2 CategoryID="5"/> 
</cmds:PopupBehavior.CustomUI> 

如果您的dp的setter现在被调用,请检查输出窗口以查看它无法绑定的原因