Потерянная в списке привязка данных - PullRequest
0 голосов
/ 02 октября 2011

Я пытаюсь сделать что-то, что мне показалось бы очень простым, но .. Я создал сводное приложение и вставил список в MainPage.xaml

< ListBox x:Name = "partyList" Margin = "0,0,-12,0" > 
< ListBox.ItemTemplate > 
    < DataTemplate > 
        < StackPanel Orientation = "Horizontal" Margin = "0,0,0,17" > 
            < StackPanel Width = "311" > 
                < TextBlock Text = "{Binding throwLocation}" 
                           TextWrapping = "Wrap" 
                  Style = "{StaticResource PhoneTextExtraLargeStyle}" /> 
                < TextBlock Text = "{Binding throwText}" 
                            TextWrapping = "Wrap" 
                            Margin = "12,-6,12,0" 
                Style = "{StaticResource PhoneTextSubtleStyle}" /> 
            </ StackPanel > 
        </ StackPanel > 
    </ DataTemplate > 
 </ ListBox.ItemTemplate > 
</ ListBox > 

Я хочу заполнить что-тоlistbox .. и создали ObservableCollection в mainpage.xaml.cs и решили, что я могу просто указать на это ItemsSource, но в списке ничего не появляется.* Я получаю окно сообщения и вижу, что данные попали в коллекцию oblItems, но в списке ничего нет.

Что я делаю не так?Я думал, что это должно быть довольно просто.

Ответы [ 2 ]

1 голос
/ 03 октября 2011

ОК, ответ на ваш вопрос состоит из двух частей: одна причина сбоя привязки, а затем подсказка.Причина, по которой ваши данные не отображаются, заключается в том, что два свойства в вашем классе «ListItems» не объявлены должным образом, они должны быть полностью объявлены свойствами с использованием методов получения и установки, например:

    public class ListItems
{
    public string throwText  { get; set; }
    public string throwLocation { get; set; }
}

Проще говоряесли вы не выставите значения правильно, Silverlight не сможет связать и правильно запросить данные.

Теперь для подсказки Если вы запустите шаблон DataBound с помощью Windows Phone SDK, вы увидите лучший способ сделать это:используя MVVM (инфраструктуру для правильной привязки данных), где вы разделяете представление (XAML), модель (как выглядят ваши данные, например, ваши свойства) и данные.MVVM - это более безопасный для данных / типа способ разработки приложений, которые отображают данные посредством привязки данных.После того, как вы просмотрели это, я также предлагаю взглянуть на такие фреймворки, как MVVMLight (http://mvvmlight.codeplex.com) или Calburn.Micro (http://caliburnmicro.codeplex.com)to), которые помогут вам в будущем.

Надеюсь, это поможет.

0 голосов
/ 02 октября 2011

Вам нужно вызвать databind из списка: partyList.DataBind (). Это то, что заставляет элементы фактически добавляться в список.

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