Справка по привязке данных WPF VB.NET - PullRequest
1 голос
/ 04 июля 2011

Хорошо, поэтому я уже некоторое время пытаюсь сгладить эту привязку данных, и каждый раз, когда я думаю, что получаю ее, она не работает. Пожалуйста, скажите мне, где я иду не так. Дайте мне знать, если вам нужна дополнительная информация, но в основном, сейчас, у меня это wAddClient.xaml.vb:

Imports System.ComponentModel
Public Class WAddClient
Implements INotifyPropertyChanged

Public Sub New()

    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.
    DataContext = newClient
    newClient = New Client()

End Sub

Private _newClient As Client
Public Property newClient As Client
    Get
        Return _newClient
    End Get
    Set(ByVal value As Client)
        _newClient = value
        NotifyPropertyChanged("newClient")
    End Set
End Property

Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Private Sub NotifyPropertyChanged(ByVal info As String)
    RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(info))
End Sub
End Class

Тогда это то, что я пытаюсь сделать, насколько привязка, это XAML:

<TextBox Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="4" Name="txtFirstName" Margin="0,0,5,0">
    <TextBox.Text>
        <Binding Source="Me" Path="newClient.first_name" Mode="TwoWay" 
                 ValidatesOnDataErrors="True" ValidatesOnExceptions="True" 
                 UpdateSourceTrigger="PropertyChanged">
        </Binding>
    </TextBox.Text>
</TextBox>

Итак, как вы можете догадаться, у клиента есть свойство first_name, которое я хочу связать. Вот частичный код для клиентского класса.

Imports System.ComponentModel

Public Class Client
Implements INotifyPropertyChanged
Implements IDataErrorInfo

'Constructors
Public Sub New()
    salutation = "Mr."
    first_name = "Kevin"
    last_name = "Tester"
    email = ""
    primary_phone = ""
    address_1 = ""
    city = ""
    state_code = ""
    zip_code = ""
    address_2 = ""
    secondary_phone = ""
    fax = ""
End Sub

Так что я не понимаю, что я делаю не так. Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

В вашем переплете: Source="Me" это неправильно.

Удалите это и назначьте экземпляр Client для DataContext. Путь Связывания будет относительно этого объекта.

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

2 голосов
/ 04 июля 2011

Извините, мои навыки на VB.net отсутствуют. Но давайте все равно попробуем:

    DataContext = newClient
    newClient = New Client()

Я думаю, вы должны поменять эти две строки. Не уверен, как работает ссылка на VB.net.

Также вы не упомянули, что не работает точно. Поэтому я бы посоветовал вам скачать Snoop, чтобы проверить, верен ли DataContext.

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