0

Db クラスのプロパティ

[Serializable]
[EnableClientAccess()]
public class DbPersonelJobDetail
{

    public DbPersonelJobDetail()
    {

    }
    [Key]
    public Guid PersonelID { get; set; }
    public Guid JobID { get; set; }
    public string JobName { get; set; }
    public string Adi { get; set; }
}

DomainServices Linq クエリ

 public IQueryable<DTO.DbPersonelJobDetail> GetPersonelJobTreeList()
    {
        IQueryable<DTO.DbPersonelJobDetail> result = from p in ObjectContext.SPA_PersonelJobDetail
                                                     join c in ObjectContext.SPA_PersonelJob on p.PersonelJobID equals c.ID
                                                     select new DTO.DbPersonelJobDetail()
                                                     {
                                                         JobID=p.PersonelJobID,
                                                         JobName = c.JobName,
                                                         PersonelID=p.ID,
                                                         Adi=p.Adi
                                                     };
        return result.AsQueryable();
    }

BindTreeList メソッド

 public void BindTreeList()
    {
        loadOP = context.Load(context.GetPersonelJobTreeListQuery(), false);
        loadOP.Completed += loadOP_Completed;
    }

    void loadOP_Completed(object sender, EventArgs e)
    {
        treeListPersonel.ItemsSource = loadOP.Entities;
    }

私は BindTreeList() メソッドをバインドする Treeview です。

以下、写真の通り。HierarchicalDataTemplate Itemsource バインディングの方法

例を挙げていただけますか?

私ができなかった :(

あなたのアイデアを待っています...

穿刺

4

1 に答える 1

0

最初のレベルのノードをロードします。HierarchicalDataTemplate で、ItemsSource を LoadChildsConverter にバインドします

<riaControls:DomainDataSource x:Name="MyData" QueryName="GetFirstLavel" 
                                  AutoLoad="True" LoadSize="50">
            <riaControls:DomainDataSource.DomainContext>
                <web:AdvDomainContext />
            </riaControls:DomainDataSource.DomainContext>
        </riaControls:DomainDataSource>

<sdk:TreeView ItemsSource="{Binding}" DataContext="{Binding ElementName=MyData, Path=Data}">
    <sdk:TreeView.ItemTemplate>
        <sdk:HierarchicalDataTemplate 
        ItemsSource="{Binding Converter={StaticResource TreeViewCollectionConverter}}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding CODE}" />
                <TextBlock Text="{Binding DESC}" />
            </StackPanel>
        </sdk:HierarchicalDataTemplate>
    </sdk:TreeView.ItemTemplate>
</sdk:TreeView>

TreeViewCollectionConverter.cs

public class TreeViewR5OBJECTCollectionConverter : IValueConverter
{
   public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        ObservableCollection<Node> nodeList = new ObservableCollection<Node>();
        if (value != null)
        {
            AdvDomainContext ctx = new AdvDomainContext();
            Node parentNode = (Node)value;
            ctx.Load(ctx.GetChildsQuery(parentNode), iop =>
                            {
                                foreach (var o in iop.Entities)
                                    nodeList.Add(o);
                            }, null);
        }
        return nodeList;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
}

AdvDomainService.cs には、

public IQueryable<Node> GetFirstLavel()

最初のレベルのノードを返し、

    public IQueryable<Node> GetChilds(Node ParentNode)

ParentNode の子を返す

于 2012-10-11T11:54:50.533 に答える