XAML ListBox绑定

时间:2010-05-19 15:56:50

标签: silverlight xaml listbox

我正在使用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}

1 个答案:

答案 0 :(得分:0)

给它一个镜头 - ItemsSource =“{Binding myMap.Layers}”。

也许更简单的选项是在构造函数中设置“this.DataContext = map”。然后绑定看起来像:ItemsSource =“{Binding Layers}”。你可以完全删除myMap。