Привязка данных ItemsControl ... не работает привязка к текущему элементу - PullRequest
1 голос
/ 08 марта 2011

У меня есть следующая страница ItemsControl ...

<Page x:Class="Kiosk.View.ItemListView"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:Converter="clr-namespace:Kiosk.Converter" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"
      Margin="10"
      Title="ItemListView">
    <StackPanel>
        <Button Width="130" Height="130" Style="{StaticResource DarkButton}" 
                Command="BrowseBack" Content="Back" HorizontalAlignment="Left" Margin="0,0,0,5"/>
        <ItemsControl ItemsSource="{Binding EventClassSummaries}">
            <ItemsControl.Resources>
                <Converter:OxiStringConverter x:Key="oxiStringConverter" />
            </ItemsControl.Resources>
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Height="1000" Width="900" Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button Content="{Binding Path=Name}"
                            Style="{StaticResource DarkButton}"
                            Height="42"
                            Width="440"
                            FontSize="12pt"
                            Margin="4"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </StackPanel>
</Page>

EventClassSummaries работает правильно, так как я получаю правильное количество кнопок на панели переноса, данные поступают из службы WCF, а отдельные элементы выглядят следующим образом (со стороны службы)

[DataContract]
public class EventClassSummary
{
    [DataMember] public string Category;
    [DataMember] public char Displayed;
    [DataMember] public int Id;
    [DataMember] public string Name;
    [DataMember] public char Status;
}

Проблема в том, что кнопки не отображают привязку Name, и я просто получаю пробелы.

Как ни странно, это работало в пятницу, но мне пришлось перестроить сервис и добавить некоторые дополнительные методы (хотя я не коснулся тех, которые имеют отношение к этому!?)

У кого-нибудь есть идеи, я нахожу немного странным, что это работало (я даже продемонстрировал это в личках)

1 Ответ

1 голос
/ 08 марта 2011

Чтобы DataBinding работал с WPF, вам нужно изменить поля на свойства.

Так измените:

[DataMember] public string Name;

до:

public string _Name;
[DataMember]
public string Name
{
    get { return _Name; }
    set { _Name = value; }
}

Примечание : надеюсь, вы не возражаете против моей проповеди, но не стоит ссылаться на ваши классы передачи данных на уровне представления - вам следует подумать о разделении ваших уровней.

...