XAML ListBox Binding - PullRequest
       4

XAML ListBox Binding

0 голосов
/ 19 мая 2010

Я работаю над веб-сайтом ГИС в C # и Silverlight и пытаюсь заполнить ListBox на основе слоев карты. Код работает, если я собираю все вместе в один файл XAML (где карта определена в одном и том же файле), но я пытаюсь разделить вещи на отдельные классы, а 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>

myMap устанавливается, когда класс вызывается этим кодом C # ...

открытый частичный класс 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, похоже, не работает.

Есть мысли?

EDIT: Код XAML, похоже, обрезан в посте (хотя он виден, когда я его редактирую). Привязка данных определяется: ItemsSource = "{Binding Path = Layers, ElementName = myMap}

1 Ответ

0 голосов
/ 20 мая 2010

Дайте этому шанс - ItemsSource = "{Binding myMap.Layers}".

Возможно, более простым вариантом будет установка «this.DataContext = map» в конструкторе. Привязка будет выглядеть следующим образом: ItemsSource = "{Binding Layers}". Вы можете полностью удалить myMap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...