2010-08-02 63 views
0

我有一个listview谁是itemssource是MyModel的ObservableCollection。我试图找出如何将文本框的文本的属性绑定到我试过模型的所有者财产如何绑定到WPF属性的属性

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}" /> 

,但留下的文字块空白。什么是正确的语法?

回答

1

绑定看起来很好。我假设你将TextBlock放入DataTemplate并将其附加到ListView。如果是,那应该起作用。

要找到该错误,请通过文字替换Binding以查看是否有一些行(必须在每行中显示该文字)。如果不是,请检查ItemsSource。如果是,请检查确实有一个Person -object附加到MyModel -instances,并且Name属性不为空或为空。检查VS的输出窗口。在那里你会看到binding-errormessages。

如果你没有的DataTemplate,这里一个例子:

<ListView ItemsSource="[Your ItemsSource]"> 
    <ListView.ItemTemplate>     
     <DataTemplate> 
      <Grid> 
       <TextBlock Text="{Binding Owner.Name}"/> 
      </Grid>      
     </DataTemplate>     
    </ListView.ItemTemplate>          
</ListView> 
+0

我笨。我没有将Name属性设置为我作为公共成员的属性。哎呀。 – 2010-08-02 23:07:24

0

检查DataContext设置是否正确并实现INotifyPropertyChanged(引发属性值更改时定义的事件)。

0

尝试使用数据源向导形式VS 2010 我只是添加这些类和点击,CLIK,短声

<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" />