我的要求是将自定义用户控件显示为弹出窗口。我正在尝试使用 this 方法在 Silverlight/MVVM 中实现此功能。但我无法找到一种方法可以将一些参数传递给我的弹出窗口。我通过 this 方法来实现它,但它不知何故不起作用。
这就是我的 XAML 的样子:
View1 中按钮的行为。单击此按钮后,我将打开一个弹出视图2:
<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); }
}
由于某种原因,属性的设置器没有被调用。
这一定是第一个视图上的绑定问题,将您的代码更改为以下代码来测试并查看是否是:
<cmds:PopupBehavior.CustomUI>
<views:View2 CategoryID="5"/>
</cmds:PopupBehavior.CustomUI>
如果你的 dp 的 setter 现在被调用,请检查你的输出窗口以了解它无法绑定的原因