我有一个listview,他的itemssource是MyModel的ObservableCollection。我试图找出如何将文本框文本的属性绑定到模型的所有者属性的Name属性
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}" />
但是文本块留空了。什么是正确的语法?
答案 0 :(得分:1)
绑定看起来很好。我假设您将TextBlock
放入DataTemplate
并将其附加到ListView
。如果是,那应该有效。
要查找错误,请通过文字替换Binding
以查看是否有某些行(必须在每行中显示文字)。如果没有,请检查ItemsSource
。如果是,请检查您的Person
- 实例是否附加了MyModel
- 对象,并且Name
- 属性不为null或为空。检查VS的输出窗口。在那里你会看到binding-errormessages。
如果你没有DataTemplate,这里有一个例子:
<ListView ItemsSource="[Your ItemsSource]">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Owner.Name}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
答案 1 :(得分:0)
检查DataContext是否设置正确并实现INotifyPropertyChanged(引发属性值更改时定义的事件。)。
答案 2 :(得分:0)
尝试使用VS 2010的数据源向导表单 我只是添加这些类并单击,clik,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" />
答案 3 :(得分:-1)
<Slider Margin="81,161.66,66,0" Name="Height" Minimum="0" Maximum="10" Width="400"></Slider>
<Slider Margin="81,1.66,66,0" Name="Width" Minimum="0" Maximum="10" Width="400"/>
<Ellipse Height="{Binding ElementName=Height}" Width="{Binding ElementName=Width}" Fill="Blue" ></Ellipse>