【问题标题】:XAML ListBox BindingXAML 列表框绑定
【发布时间】:2010-05-19 15:56:49
【问题描述】:

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

公共部分类 TableOfContents : UserControl { 映射我的地图;

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}

【问题讨论】:

    标签: silverlight xaml listbox


    【解决方案1】:

    试一试 - ItemsSource="{Binding myMap.Layers}"。

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

    【讨论】:

      猜你喜欢
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多