如何绑定到WPF中属性的属性
我有一个listview谁的itemssource是MyModel的一个可观察的集合。我试图找出如何将textbox文本的属性绑定到模型所有者属性的Name属性如何绑定到WPF中属性的属性,wpf,data-binding,Wpf,Data Binding,我有一个listview谁的itemssource是MyModel的一个可观察的集合。我试图找出如何将textbox文本的属性绑定到模型所有者属性的Name属性 public class Person { public string Name { get; set; } public string Address { get; set; } //... } public class MyModel { public string Title { get; set
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}" />
但这会留下文本块空白。正确的语法是什么?检查DataContext是否设置正确,并实现INotifyPropertyChanged(在属性值更改时引发它定义的事件)。绑定看起来很好。我假设您将
TextBlock
放入DataTemplate
并将其附加到列表视图中。如果是的话,那就行了
要查找错误,请通过文本替换绑定
,以查看是否有一些行(文本必须显示在每一行中)。如果没有,请检查项目资源
。如果是,请检查您的MyModel
-实例是否确实附加了Person
-对象,并且Name
-属性是否为null或空。同时检查VS的输出窗口。在那里您将看到绑定错误消息
如果您没有DataTemplate,下面是一个示例:
<ListView ItemsSource="[Your ItemsSource]">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Owner.Name}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
尝试使用数据源向导表单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" />
我很笨。实际上,我没有将Name属性设置为属性,而是将其设置为公共成员。请考虑你的答案来解释你的答案是如何回答这个10岁的问题的方式,现有的答案不。
<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>