首页 > 其他 > 详细

lightswitch 添加 TreeView 控件

时间:2014-04-27 03:07:50      阅读:490      评论:0      收藏:0      [点我收藏+]

代码片段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"  x:Class="LightSwitchApplication.TreeViewControl.DepartmentTreeViewControl"
    xmlns:local="clr-namespace:LightSwitchApplication.TreeViewControl"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
 
    <UserControl.Resources>
        <local:EntityCollectionValueConverter x:Key="EntityCollectionValueConverter" />
    </UserControl.Resources>
  
    <Grid x:Name="LayoutRoot" Background="White">
 
        <StackPanel Orientation="Horizontal">
            <sdk:TreeView Name="treeViewControl" SelectedItemChanged="treeViewControl_SelectedItemChanged"  ItemsSource="{Binding Screen.DepartmentTree}">
                <sdk:TreeView.ItemTemplate>
 
                    <sdk:HierarchicalDataTemplate
                            ItemsSource="{Binding
                        Converter={StaticResource EntityCollectionValueConverter},
                        ConverterParameter=Children}">
 
                        <StackPanel Orientation="Horizontal">
 
                            <!--<CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay}"/>-->
 
                            <TextBlock Text="{Binding Path=Name, Mode=TwoWay}"
                                       Margin="5,0" Width="74" />
                        </StackPanel>
                    </sdk:HierarchicalDataTemplate>
                </sdk:TreeView.ItemTemplate>
            </sdk:TreeView>
        </StackPanel>
    </Grid>
</UserControl>

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using Microsoft.LightSwitch.Framework.Client;
using Microsoft.LightSwitch.Presentation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
 
namespace LightSwitchApplication.TreeViewControl
{
    public partial class DepartmentTreeViewControl : UserControl
    {
        public DepartmentTreeViewControl()
        {
            InitializeComponent();
        }
 
        private void treeViewControl_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            var selectItem = (LightSwitchApplication.Department)treeViewControl.SelectedItem;
            var type1 = selectItem.GetType();
            var context = (IContentItem)this.DataContext;
            var screen = context.Screen;
            var data = (VisualCollection<LightSwitchApplication.Department>)screen.Details.Properties["DepartmentTree"].Value;
            data.SelectedItem = selectItem;
            //data.text= selectItem.Details.Properties["Id"].Value;
 
        }
 
    }
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using Microsoft.LightSwitch;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
 
namespace LightSwitchApplication.TreeViewControl
{
    public class EntityCollectionValueConverter : IValueConverter
    {
        public object Convert(object value,
            Type targetType,
            object parameter,
            System.Globalization.CultureInfo culture)
        {
            string strErrorMessage
                = "Converter parameter should be set to the property name that will serve as source of data";
 
            IEntityObject entity = value as IEntityObject;
            if (entity == null)
                throw new ArgumentException("The converter should be using an entity object");
            string sourcePropertyName = parameter as string;
            if (string.IsNullOrWhiteSpace(sourcePropertyName))
                throw new ArgumentException(strErrorMessage);
 
            // Enumerate the source property using logic dispatcher
            // and prepare the collection of entities that the control will bind to
            var entities = new ObservableCollection<IEntityObject>();
            var temporaryEntites = new List<IEntityObject>();
            entity.Details.Dispatcher.BeginInvoke(delegate
            {
                IEntityCollection eCollection =
                    entity.Details.Properties[sourcePropertyName].Value as IEntityCollection;
                if (eCollection == null)
                {
                    Debug.Assert(false, "The property " + sourcePropertyName + " is not an entity collection");
                    return;
                }
                // Now we are on the logic thread. We cannot just stuff the observable collection
                // with entities because the collection will immediately raise Changed events
                // and this will result in invalid cross-thread access. So we‘ll use a temporary collection
                // and copy the entites again on the UI thread
                foreach (IEntityObject e in eCollection)
                {
                    temporaryEntites.Add(e);
                }
                Microsoft.LightSwitch.Threading.Dispatchers.Main.BeginInvoke(delegate
                {
                    // I wish ObservableCollection had an AddRange() method...
                    foreach (IEntityObject e in temporaryEntites)
                    {
                        entities.Add(e);
                    }
                });
            });
            return entities;
        }
        public object ConvertBack(object value,
            Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}

  

lightswitch 添加 TreeView 控件,布布扣,bubuko.com

lightswitch 添加 TreeView 控件

原文:http://www.cnblogs.com/neozhu/p/3692003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!