treeview绑定wpf无法绑定类中的嵌套属性
wpf新手,因此有点挣扎。 在我们开始全面实施之前,我正在准备一个快速演示 我左边有一个树视图,上面有treeview绑定wpf无法绑定类中的嵌套属性,wpf,Wpf,wpf新手,因此有点挣扎。 在我们开始全面实施之前,我正在准备一个快速演示 我左边有一个树视图,上面有 Continent Country City structure 当用户选择城市时,它应该在右侧的选项卡控件中填充一些文本框 我做了一些工作,但不能让它与复合对象一起工作 简而言之,你能发现我的zaml或代码有什么问题吗。 为什么不绑定到my CityDetails.ClubsCount或CityDetails.PubsCount 我正在构建的是基于 非常感谢您的建议
Continent
Country
City structure
当用户选择城市时,它应该在右侧的选项卡控件中填充一些文本框
我做了一些工作,但不能让它与复合对象一起工作
简而言之,你能发现我的zaml或代码有什么问题吗。
为什么不绑定到my CityDetails.ClubsCount或CityDetails.PubsCount
我正在构建的是基于
非常感谢您的建议或回复
数据模型
视图模型
XAML
看这里,不相关的部分被省略了:
<TabItem DataContext="{Binding Path=SelectedItem.City, ElementName=tree, Mode=OneWay}">
<StackPanel >
<!-- DONT WORK WHY-->
<TextBlock Text="{Binding SelectedItem.CityDetailsInfo.ClubsCount}"/>
<TextBlock Text="{Binding SelectedItem.CityDetailsInfo.PubsCount}" />
</StackPanel>
</TabItem>
TabItem的DataContext是SelectedItem.City:也就是说,DataContext是一个城市。城市没有SelectedItem属性。将绑定更改为,例如
<TextBlock Text="{Binding CityDetailsInfo.ClubsCount}" />
i、 e.从当前DataContext开始路径,在本例中为城市对象
作为提示,Visual Studio输出窗口显示绑定错误,这通常可以提供足够的信息来立即诊断此错误,例如,如果在“City”上未找到属性“SelectedItem”,则很明显WPF没有查看您认为它正在查看的对象 它是有效的!!!!!对不起,如果我贴了一些不相关的东西,只是不知道我要去哪里了。
<DockPanel>
<DockPanel LastChildFill="True">
<Label DockPanel.Dock="top" Content="Title " HorizontalAlignment="Center"></Label>
<StatusBar DockPanel.Dock="Bottom">
<StatusBarItem Content="Status Bar" ></StatusBarItem>
</StatusBar>
<Grid DockPanel.Dock="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TreeView Name="tree" ItemsSource="{Binding Continents}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded,Mode=TwoWay}"/>
<Setter Property="IsSelected" Value="{Binding IsSelected,Mode=TwoWay}"/>
<Setter Property="FontWeight" Value="Normal"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type ViewModels:ContinentViewModel}"
ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="Images\Continent.png"/>
<TextBlock Text="{Binding ContinentName}"/>
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type ViewModels:CountryViewModel}"
ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="Images\Country.png"/>
<TextBlock Text="{Binding CountryName}"/>
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type ViewModels:CityViewModel}" >
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="Images\City.png"/>
<TextBlock Text="{Binding CityName}"/>
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>
<GridSplitter Grid.Row="0" Grid.Column="1" Background="LightGray"
Width="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<Grid Grid.Column="2" Margin="5" >
<TabControl>
<TabItem Header="Details" DataContext="{Binding Path=SelectedItem.City, ElementName=tree, Mode=OneWay}">
<StackPanel >
<TextBlock VerticalAlignment="Center" FontSize="12" Text="{Binding CityName}"/>
<TextBlock VerticalAlignment="Center" FontSize="12" Text="{Binding Area}"/>
<TextBlock VerticalAlignment="Center" FontSize="12" Text="{Binding Population}"/>
<!-- DONT WORK WHY-->
<TextBlock VerticalAlignment="Center" FontSize="12" Text="{Binding SelectedItem.CityDetailsInfo.ClubsCount}"/>
<TextBlock VerticalAlignment="Center" FontSize="12" Text="{Binding SelectedItem.CityDetailsInfo.PubsCount}"/>
</StackPanel>
</TabItem>
</TabControl>
</Grid>
</Grid>
</DockPanel>
</DockPanel>
<TabItem DataContext="{Binding Path=SelectedItem.City, ElementName=tree, Mode=OneWay}">
<StackPanel >
<!-- DONT WORK WHY-->
<TextBlock Text="{Binding SelectedItem.CityDetailsInfo.ClubsCount}"/>
<TextBlock Text="{Binding SelectedItem.CityDetailsInfo.PubsCount}" />
</StackPanel>
</TabItem>
<TextBlock Text="{Binding CityDetailsInfo.ClubsCount}" />