WPF嵌套对象数据绑定
您好,我在理解WPF与嵌套对象的数据绑定时遇到问题 我有一个工作组类,其中包含一个名为ListMembers的用户激活对象列表,我想显示它的属性。如何访问其嵌套属性?这个类包含另一个名为User的对象,它有自己的用户名,最终我希望在组合框中显示用户名,而不是WPF_test.User_激活 下面是XAML代码和相应的布局:WPF嵌套对象数据绑定,wpf,data-binding,Wpf,Data Binding,您好,我在理解WPF与嵌套对象的数据绑定时遇到问题 我有一个工作组类,其中包含一个名为ListMembers的用户激活对象列表,我想显示它的属性。如何访问其嵌套属性?这个类包含另一个名为User的对象,它有自己的用户名,最终我希望在组合框中显示用户名,而不是WPF_test.User_激活 下面是XAML代码和相应的布局: <ListView x:Name="ListViewWorkgroups" VerticalAlignment="Top" Height="Auto" Width="A
<ListView x:Name="ListViewWorkgroups" VerticalAlignment="Top" Height="Auto" Width="Auto" ItemsSource="{Binding listWorkgroups}">
<ListView.View>
<GridView>
<GridViewColumn Width="auto" Header="Workgroup" DisplayMemberBinding="{Binding Name}"></GridViewColumn>
<GridViewColumn Width="auto" Header="Skills">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ListSkills}" ></ComboBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="auto" Header="Members">
<GridViewColumn.CellTemplate>
<DataTemplate >
<ComboBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ListMembers}" ></ComboBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
布局:
谢谢大家! 您需要为组合框设置ItemTemplate
<ComboBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ListMembers}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding User.Username}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
或者,如果不需要任何复杂的东西,可以绑定DisplayMemberPath
<ComboBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ListMembers}" DisplayMemberPath="{Binding User.Username}"/>
您可以使用“.”来访问属性,就像在普通c代码中一样这只是前面答案的后续。我刚刚发现,在绑定中,可以以文件系统的方式使用前导周期:
<ComboBox ItemsSource="{Binding .ListMembers}">
<DataTemplate>
<TextBlock Text="{Binding .User.Username}"/>
</DataTemplate>
这种语法在语义上没有添加任何内容,但在某些情况下会使语句更具可读性(XAML肯定可以使用它!)
这里有一个更好的例子:
<ComboBox ItemsSource="{Binding Caliber}" DisplayMemberPath=".Thickness" />
其中厚度
是口径
的属性