创建Silverlight UserControl

时间:2010-01-23 04:25:42

标签: silverlight silverlight-3.0 user-controls

我正在创建一个silverlight用户控件,我应该能够通过混合拖放。但是此控件需要接受页面上已有的地图。

例如。

  1. Main.xaml包含地图控件。
  2. MapEditor.xaml包含按钮和其他控件。在.cs文件中,它需要访问一个地图控件(Main.xaml中的那个)。
  3. 如何完成这项工作?

    我在考虑在MapEditor的构造函数中添加一个参数,但是如何在设计模式中将地图作为参数传递?

    感谢。

    PS。我打算将这个控件分解为一个silverlight库,以便以后可以在多个项目中使用。

1 个答案:

答案 0 :(得分:1)

您不希望为控件提供参数化构造函数,XAML将仅使用其默认构造函数构造类型。

简单方法

最简单的方法是将DependencyProperty添加到您将为其分配Map控件的控件中(我将在此示例中使用类型名称MyMap): -

public MyMap Map
{
    get { return (MyMap)GetValue(MapProperty); }
    set { SetValue(MapProperty, value); }
}

public static DependencyPropery MapProperty = new DependencyProperty("Map",
    typeof(MyMap), typeof(MapEditor), new PropertyMetaData(null));

现在在Blend中,Map属性将出现在“属性”选项卡的“其他”类别中。然后,您可以使用“创建数据绑定”的“元素属性”选项卡来选择它应绑定到的地图控件。

硬核方法

那就是说我倾向于按照这些指导原则构建一个适当的可自定义控件Creating a New Control by Creating a ControlTemplate。除此之外,我将扩展ContentControl基类并在模板的核心包含ContentPresenter。控件将假设子控件是MyMap控件。

这种方法允许在Blend中设置MapEditor控件的整个外观,并允许将“编辑”的Map控件作为子项拖放到MapEditor上控制。