找回密码
 立即注册

QQ登录

只需一步,快速开始

fox_1983
论坛元老   /  发表于:2012-7-26 10:57:00
11#
回复 9楼dof的帖子

在线等
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-26 11:32:00
12#
这是我实现该功能的代码:
MainPage.xaml.cs

  1. namespace _5366_Chart
  2. {
  3.     public partial class MainPage : Page
  4.     {
  5.         public MainPage()
  6.         {
  7.             InitializeComponent();
  8.             var _tournament = GetDataSource();
  9.             c1OrgChart1.Header = _tournament;

  10.         }

  11.         public static Team GetDataSource()
  12.         {
  13.             Team header = Date().Where(t => t.ID == 1).FirstOrDefault();

  14.             OrgStaff(header);

  15.             return header;
  16.         }

  17.         public static void OrgStaff(Team team)
  18.         {
  19.             var staff = Date().Where(e => e.Fid == team.ID);

  20.             foreach (Team item in staff)
  21.             {
  22.                 OrgStaff(item);
  23.                 team.Staff.Add(item);
  24.             }
  25.         }

  26.         public static List<Team> Date()
  27.         {
  28.             List<Team> source = new List<Team>();
  29.             source.Add(new Team() { ID = 1, Name = "刘华强", Position = "董事长", Fid = 0 });
  30.             source.Add(new Team() { ID = 2, Name = "赵晓华", Position = "产品经理", Fid = 1 });
  31.             source.Add(new Team() { ID = 3, Name = "刘宗敏", Position = "项目经理", Fid = 1 });
  32.             source.Add(new Team() { ID = 4, Name = "林志玲", Position = "产品经理秘书", Fid = 2 });
  33.             source.Add(new Team() { ID = 5, Name = "刘德华", Position = "技术员", Fid = 3 });
  34.             source.Add(new Team() { ID = 6, Name = "张学友", Position = "技术员", Fid = 3 });
  35.             source.Add(new Team() { ID = 7, Name = "谭咏麟", Position = "初级技术员", Fid = 6 });
  36.             return source;
  37.         }
  38.     }

  39.     public class Team
  40.     {
  41.         public int ID { get; set; }
  42.         public string Name { get; set; }
  43.         public string Position { get; set; }
  44.         public int Fid { get; set; }

  45.         public override string ToString()
  46.         {
  47.             return Position + ": " + Name;
  48.         }
  49.         private List<Team> _staff = new List<Team>();
  50.         public List<Team> Staff
  51.         {
  52.             get { return _staff; }
  53.             set { _staff = value; }
  54.         }
  55.     }
  56. }
复制代码




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-26 13:15:00
13#
回复 12楼dof的帖子

您真是救命稻草啊!太感谢了
orgchart 不太会用 还有个小问题 请教

上面您的代码生成了 树形图  能不能实现这样一个功能

点击 具体某一项的时候  弹出对话框显示相应信息   
比如说点击 【董事长:刘华强】  弹出对话框 里面显示  相关的数据 如: id Name  fid这些
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-26 15:16:00
14#
回复 12楼dof的帖子

您好 我参照orgchart的官方文档说明 添加了一个功能
就是 每一层都有个复选框 选中文本框后 其下面的其他层就隐藏起来
但是我复制代码后 提示有错误
         <CheckBox Margin="4 0" IsChecked="{Binding IsCollapsed, Mode=TwoWay,  RelativeSource={RelativeSource AncestorType=c1:C1OrgChart}}"/>

错误提示:未在RelativeSource类型中找到属性 AncestorType
这是什么情况 应该怎么处理  我完全是按照官方文档来做的  难道资料有问题?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-26 17:59:00
15#
fox_1983 你好

能将你现在的实现方法发给我看一看吗,你可以直接修改12楼中的Demo,然后发给我调试一下。
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-26 18:28:00
16#
回复 15楼dof的帖子

根据您提供的代码 其他问您的问题都解决了 十分感谢
目前的问题是  如何折叠某一层 其下的子层都隐藏起来   
根据官方文档的代码 我在orgchart的模板里加了一个 checkbox
(完全是在官方文档中复制的 应该不会有错)
具体页面完整代码如下
<UserControl x:Class="OrgChart.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    designHeight="300"
    designWidth="400"
    xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml"
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

    <UserControl.Resources>
        <DataTemplate x:Key="EmployeeTemplate">
            <Border Background="#EFF7FF" BorderBrush="#96C2F1" BorderThickness="1 1 2 2" CornerRadius="6"  MaxWidth="200" >
                <StackPanel Orientation="Vertical" >
                    <CheckBox Margin="4 0" IsChecked="{Binding IsCollapsed, Mode=TwoWay,  RelativeSource={RelativeSource AncestorType=c1:C1OrgChart}}"/>
                    <TextBlock Text="{Binding Position}" FontSize="12" />
                    <TextBlock Text="{Binding Name}" FontSize="14" />
                    <Image Height="80" Name="image1" Stretch="Fill" Width="60" Source="{Binding Pic}"  Tag="{Binding ID}" MouseLeftButtonDown="Image_MouseLeftButtonDown"  />
                </StackPanel>
            </Border>
        </DataTemplate>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot" Background="White">
        <c1:C1OrgChart  ItemTemplate="{StaticResource EmployeeTemplate}" Margin="10,10,0,0" Name="c1OrgChart1" Orientation="Vertical">
        </c1:C1OrgChart>
    </Grid>
</UserControl>

无法通过编译 页面提示错误: 无法在RelativeSource类型中找到属性AncestorType
我的开发环境是 VS2010 Silverlight4

如果是环境问题导致不能解决
那能不能换种方法实现我要的折叠效果
比如 点击【项目经理:赵晓华】 会把其下的层都隐藏掉
您多费心了!
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-26 18:33:00
17#

这个是我测试程序完整压缩包

这个是我测试程序完整压缩包

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-27 12:31:00
18#
回复 17楼fox_1983的帖子

你现在使用的是VS2010 + Silverlight4.0吧,这个功能需要VS2010 SP1 + Silverlight 5.0的支持
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-27 14:08:00
19#
回复 18楼dof的帖子

感谢您的回复 有问题我在请教您 多谢!
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-27 14:52:00
20#
回复 19楼fox_1983的帖子

有个新问题  我们上面的代码 Team类都是手动创建的
如果这个类是由 VS创建的 实体数据模型(XXX.edmx) 那么我怎么把
private List<Team> _staff = new List<Team>();
        public List<Team> Staff
        {
            get { return _staff; }
            set { _staff = value; }
        }
加进去呢? Team类中没有这个属性 页面就不能分出层来
或者有别的办法实现吗  请指教 谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部