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

Как мне взять созданный мной базовый класс и извлечь его свойства из списка в WPF? Я уже пытался поиграть со свойством itemssource, но, похоже, у меня ничего не получилось.

Public Class PageContent
    Public StartDate As DateTime
    Public Header As String
    Public Content As String
End Class

<ListView Name="grid_PageContentList" >
     <ListView.View>
       <GridView>
            <GridViewColumn  DisplayMemberBinding="{Binding StartDate}" Width="50"></GridViewColumn>
            <GridViewColumn DisplayMemberBinding="{Binding Header}" Width="50"></GridViewColumn>
            <GridViewColumn DisplayMemberBinding="{Binding Content}" Width="50"></GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

Ответы [ 2 ]

2 голосов
/ 18 декабря 2011

Вы не можете привязывать напрямую к полям, вместо этого вам нужно использовать свойства:

Public Class PageContent
    Public Property StartDate As DateTime
    Public Property Header As String
    Public Property Content As String
End Class

Также вам необходимо убедиться, что вы установили DataContext. Если у вас есть простая форма с подходом, основанным на коде, поместите это в конструктор или обработчик Loaded:

Class MainWindow 

    Public Sub New()

        InitializeComponent()

    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Loaded
        MyData = New List(Of PageContent)
        Dim pc As New PageContent
        pc.Header = "AAAAAAAA"
        pc.StartDate = Now
        MyData.Add(pc)

        pc = New PageContent
        pc.Header = "BBBBBB"
        pc.StartDate = Now.AddMinutes(1)
        MyData.Add(pc)


        DataContext = Me
    End Sub


    Public Property MyData() As List(Of PageContent)

End Class

И установите ItemsSource в своем XAML:

    <ListView Name="grid_PageContentList" ItemsSource="{Binding MyData}" >
        <ListView.View>
            <GridView>
                <GridViewColumn  DisplayMemberBinding="{Binding StartDate}" Width="50"></GridViewColumn>
                <GridViewColumn DisplayMemberBinding="{Binding Header}" Width="50"></GridViewColumn>
                <GridViewColumn DisplayMemberBinding="{Binding Content}" Width="50"></GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>
0 голосов
/ 18 декабря 2011

Вы должны сделать это ObservableCollection с INPC или DependencyProperty. Не просто привязывайте обычные свойства, как это, поскольку вы можете не видеть данные.

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