XAML GridViewColumn DisplayMemberBinding не работает - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь создать ListView из двух столбцов с привязкой данных.XAML выглядит следующим образом:

<ListView x:Name="BookingVariantsListView" ItemsSource="{Binding BookingVariants}" SelectionChanged="BookingVariantsListView_SelectionChanged" DockPanel.Dock="Top" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Top">
    <ListView.View>
        <GridView AllowsColumnReorder="False">
            <GridView.Columns>
                <GridViewColumn Header="{x:Static loc:Settings.VariantTitle}" DisplayMemberBinding="{Binding Title}" Width="320" />
                <GridViewColumn Header="{x:Static loc:Settings.VariantLink}" DisplayMemberBinding="{Binding BookingVariantURL}" Width="315" />
            </GridView.Columns>
        </GridView>
    </ListView.View>
</ListView>

, а модель выглядит так:

public class BookingVariant
{

    [JsonProperty("title")]
    public string Title { get; set; }

    [JsonProperty("booking_variant_url")]
    public string BookingVariantURL { get; set; }

}

, он удерживается в списке:

public ObservableCollection<BookingVariant> BookingVariants { get; private set; }

Теперь привязка спискакажется, работает, так как он заполняет правильное количество строк.Но столбцы не заполнены.Вместо этого каждая строка просто показывает название класса один раз.Столбцы полностью игнорируются, как кажется.

Кто-то получил идею?Спасибо!

Редактировать:

В настоящее время ListView выглядит так: current faulty listview rows

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Я нашел свою ошибку:

Вверху моего окна я импортировал другой файл XAML, который содержит информацию о стиле для других элементов управления в этом окне (в том числе и в виде списка).При удалении файла привязка Gridview работает как положено.Так что мои собственные стили переопределяют поведение.Теперь я назначу ключи всем стилям, чтобы они не использовались автоматически.

0 голосов
/ 23 сентября 2018

Кажется, вы забыли установить контекст данных.Элемент управления view не знает, где искать данные привязки.

Установите контекст данных для объекта, который содержит ObservableCollection.

Источник, содержащий класс

public class MyData
{
    // I dont know your class structure so I added all data in the constructor
    public MyData()
    {   
        BookingVariants = new ObservableCollection<BookingVariant>();
        this.BookingVariants.Add(new BookingVariant() 
        { Title = "Title", BookingVariantURL = "myURL" });

        this.BookingVariants.Add(new BookingVariant() 
        { Title = "Title2", BookingVariantURL = "myURL2" });

        this.BookingVariants.Add(new BookingVariant() 
        { Title = "Title3", BookingVariantURL = "myURL3" });
    }

    public ObservableCollection<BookingVariant> BookingVariants
    {
        get;
        private set;
    }
}

В вызывающем классе вы определяете контекст данных следующим образом:

MyData dataObject = new MyData();
BookingVariantsListView.DataContext = dataObject;

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

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