Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
treeview绑定wpf无法绑定类中的嵌套属性_Wpf - Fatal编程技术网

treeview绑定wpf无法绑定类中的嵌套属性

treeview绑定wpf无法绑定类中的嵌套属性,wpf,Wpf,wpf新手,因此有点挣扎。 在我们开始全面实施之前,我正在准备一个快速演示 我左边有一个树视图,上面有 Continent Country City structure 当用户选择城市时,它应该在右侧的选项卡控件中填充一些文本框 我做了一些工作,但不能让它与复合对象一起工作 简而言之,你能发现我的zaml或代码有什么问题吗。 为什么不绑定到my CityDetails.ClubsCount或CityDetails.PubsCount 我正在构建的是基于 非常感谢您的建议

wpf新手,因此有点挣扎。 在我们开始全面实施之前,我正在准备一个快速演示 我左边有一个树视图,上面有

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