这是我第一次使用Silverlight,因此,我对整个xaml标记样式是新手。我正在使用ESRI提供的silverlight库构建GIS应用程序。Silverlight启动生命周期并绑定
从我的理解,当从上到下分析XAML页面时,按顺序创建对象。它是否正确?我在我的主页的第38行创建了一个esri Map对象,然后在我的主页的第247行创建了一个DrawControl(我自己制作的绘图控件)。
绘图工具中的对象如何工作的一部分是通过将地图对象传递给构造函数来创建的。与名称X我的地图对象:NAME = “地图”,我有我的drawcontrol如下:
<local:DrawRootControl x:Name="DrawRoot" Height="152" Margin="216,10,0,0" Grid.Row="1" VerticalAlignment="Top" Visibility="Collapsed" map="{Binding ElementName=Map}"/>
然后在我的控制,我有这个在后面的代码:
public static readonly DependencyProperty mapProperty = DependencyProperty.Register
(
"map",
typeof(Map),
typeof(DrawRootControl),
null
);
public Map map
{
get { return (Map)GetValue(mapProperty); }
set { SetValue(mapProperty, value); }
}
。 .........
public DrawRootControl()
{
// Required to initialize variables
InitializeComponent();
MyDrawObject = new Draw(map)
{
LineSymbol = CanvasDraw.Resources["DrawLineSymbol"] as LineSymbol,
FillSymbol = CanvasDraw.Resources["DrawFillSymbol"] as FillSymbol
};
MyDrawObject.DrawComplete += MyDrawObject_DrawComplete;
}
当我调试时,我的构造函数中的地图对象为null。我认为如果map是在主页的前面创建的,然后当我执行该绑定时通过,它不会是null,并且会被初始化和创建。也许我做了不正确的绑定?我并不完全理解这种约束性的东西。
任何帮助,将不胜感激。
数据绑定直到初始化后才会发生。这是有道理的,因为如果控件还没有构建,没有什么可以绑定的 – kbmax
你实际上并没有使用数据绑定。你只是手动设置一个属性。 –
好的,我什么时候知道itialization何时结束?乔,我在我的xaml(第一个代码snippit在最后)绑定了地图=“{Binding ElementName = Map}” – Justin