c# - 无法在 wpf 中将 treeviewitem 转换为 treeviewitem

标签 c# wpf casting

我有 webservice asmx,还有类:

Country

public string Name {get;set;}
public string Code {get;set;}
public List<Area> Areas {get;set;}

Area

public string Name {get;set;}
public string Code {get;set;}
public List<Regions> Provinces {get;set;}

Provinces

public string Name {get;set;}
public string Code {get;set;}

我将它绑定(bind)到 mz TreeView WPF:

Country[] items = new MyService().GetListOfCountries();
structureTree.ItemsSource = items;

myTree 代码:

<UserControl x:Class="ObjectsAndZonesSimpleTree"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        <Grid>
        <StackPanel Name="stackPanel1">

            <GroupBox Header="Choose" Height="354" Name="groupBox1" Width="Auto">

                <TreeView Name="structureTree" SelectedItemChanged="structureTree_SelectedItemChanged" Grid.Row="0" Grid.Column="0" ItemsSource="{Binding}" Height="334" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Visible" Width="Auto" PreviewMouseRightButtonUp="structureTree_PreviewMouseRightButtonUp" FontFamily="Verdana" FontSize="12" BorderThickness="1" MinHeight="0" Padding="1" Cursor="Hand" Margin="-1">
                    <TreeView.Resources>
                        <HierarchicalDataTemplate DataType="{x:Type MyService:Country}" 
                                  ItemsSource="{Binding Path=ListOfRegions}">
                            <StackPanel Orientation="Horizontal">
                                <TextBlock TextAlignment="Justify" VerticalAlignment="Center" Text="{Binding Path=Name}"/>
                           </StackPanel>
                        </HierarchicalDataTemplate>
                        <HierarchicalDataTemplate DataType="{x:Type MyService:Region}" 
                                  ItemsSource="{Binding Path=Provinces}">
                            <StackPanel Orientation="Horizontal">
                                <TextBlock TextAlignment="Justify" VerticalAlignment="Center" Text="{Binding Path=Name}"/>


                </StackPanel>
                        </HierarchicalDataTemplate>
                        <DataTemplate DataType="{x:Type MyService:Province}" 
                                  ItemsSource="{Binding Path=ListOfCities}">
                            <StackPanel Orientation="Horizontal">
                                <TextBlock TextAlignment="Justify" VerticalAlignment="Center" Text="{Binding Path=Name}"/>
                </StackPanel>
                        </DataTemplate>

                    </TreeView.Resources>
                </TreeView>
            </GroupBox>

        </StackPanel>
    </Grid>

</UserControl>

这给了我空值:

private void structureTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
TreeViewItem treeViewItem = structureTree.SelectedItem as TreeViewItem;
}

最佳答案

SelectedItem 实际上将包含国家、地区或地区(或空值)。如果您真的想要 TreeViewItem,可以执行 structureTree.ItemContainerGenerator.ContainerFromItem(structureTree.SelectedItem)

关于c# - 无法在 wpf 中将 treeviewitem 转换为 treeviewitem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2929140/

相关文章:

java - 如何在 java 中使用泛型来对对象执行相当于强制转换的操作?

C++ 类继承架构 - 防止强制转换

c++ - 转化和推广是一回事吗?

javascript - 所有面向对象的语言都会在内存中创建大量重复信息吗?

c# - 将模型对象从 View 发送到 Controller 方法 ASP.NET MVC C#

wpf - 对于提供搜索速度和部署简便性的小型 WPF 应用程序,什么样的数据库?

WPF 绑定(bind)到自身

WPF SplashScreen ,如何使启动画面显示时间更长

c# - 如何使用 BindingSource 在 DataGridView 中绑定(bind)导航属性(二级属性)?

c# - 阐明 C# 扩展方法的优先级