我正在使用C#和Silverlight开发GIS网站,我正在尝试基于地图图层填充ListBox。如果我将所有内容整合在一个XAML文件中(其中Map在同一个文件中定义),代码就有效,但我试图将内容分成不同的类,而ListBox不会填充在另一个类中。
XAML代码..
<CheckBox IsChecked="{Binding Visible, Mode=TwoWay}" />
<Slider Margin="-5,0,0,0" Minimum="0" Maximum="1" Width="30"
Value="{Binding Opacity, Mode=TwoWay}" Height="18" />-->
<TextBlock Text="{Binding ID, Mode=OneWay}" Margin="5,0,0,0" >
<ToolTipService.ToolTip>
<StackPanel MaxWidth="400">
<TextBlock FontWeight="Bold" Text="{Binding CopyrightText}" TextWrapping="Wrap" />
<TextBlock Text="{Binding Description}" TextWrapping="Wrap" />
</StackPanel>
</ToolTipService.ToolTip>
</TextBlock>
</StackPanel>
</DataTemplate>
当这个C#代码调用类时,正在设置myMap ...
public partial class TableOfContents:UserControl { 映射myMap;
public TableOfContents(ref Map map)
{
InitializeComponent();
myMap = map;
foreach (Layer thisLayer in myMap.Layers)
{
layerList.Items.Add(new TextBlock() { Text = thisLayer.ID });
}
}
}
foreach语句为所有地图图层添加了TextBlocks(这只是测试代码),所以我知道信息正确传递,但XAML中定义的数据绑定似乎不起作用。
有什么想法吗?
编辑: XAML代码似乎被剪辑在帖子中(虽然它在我编辑时可见)。数据绑定定义如下: ItemsSource =“{Binding Path = Layers,ElementName = myMap}
答案 0 :(得分:0)
给它一个镜头 - ItemsSource =“{Binding myMap.Layers}”。
也许更简单的选项是在构造函数中设置“this.DataContext = map”。然后绑定看起来像:ItemsSource =“{Binding Layers}”。你可以完全删除myMap。