Как привязать к свойству свойства в WPF - PullRequest
0 голосов
/ 03 августа 2010

У меня есть просмотр списка, чей источник - это ObservableCollection MyModel. Я пытаюсь понять, как связать свойство текста текстового поля со свойством Name свойства Owner модели

public class Person
{
    public string Name { get; set; }
    public string Address { get; set; }
    //...
}

public class MyModel
{
    public string Title { get; set; }
    public Person Owner { get; set; }
    //...
}

Я пытался:

<TextBlock Text="{Binding Owner.Name}" /> 

но текстовый блок остается пустым. Какой правильный синтаксис?

Ответы [ 3 ]

1 голос
/ 03 августа 2010

Обвязка выглядит отлично. Я предполагаю, что вы положили TextBlock в DataTemplate и прикрепили его к ListView. Если да, это должно сработать.

Чтобы найти ошибку, замените Binding через литерал, чтобы увидеть, есть ли у вас строки (литерал должен быть показан в каждой строке). Если нет, отметьте ItemsSource. Если да, убедитесь, что у вас действительно Person -объект, связанный с вашими MyModel -экземплярами, и что свойство Name не является нулевым или пустым. Проверьте также окно вывода VS. Там вы увидите сообщения об ошибках привязки.

Если у вас нет DataTemplate, вот пример:

 <ListView ItemsSource="[Your ItemsSource]">
    <ListView.ItemTemplate>                
        <DataTemplate>
            <Grid>
                <TextBlock Text="{Binding Owner.Name}"/>
            </Grid>                    
        </DataTemplate>                
    </ListView.ItemTemplate>                                    
 </ListView>
0 голосов
/ 03 августа 2010

Попробуй использовать Data Source Wizard form VS 2010 Я просто добавляю эти классы и нажимаю, кликаю, кликаю

<TextBox Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Left" Margin="3" Name="nameTextBox" Text="{Binding Path=Owner.Name, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" VerticalAlignment="Center" Width="120" />
0 голосов
/ 03 августа 2010

Убедитесь, что DataContext установлен правильно, и реализуйте INotifyPropertyChanged (вызовите событие, которое он определяет, когда значение свойства изменяется.).

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