日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lightswitch 添加 TreeView 控件

發布時間:2023/12/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lightswitch 添加 TreeView 控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼片段

<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="LightSwitchApplication.TreeViewControl.DepartmentTreeViewControl"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:local="clr-namespace:LightSwitchApplication.TreeViewControl"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"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>

  

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;}} }

  

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 tovar 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 threadforeach (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();}} }

 片段2

public partial class CategoriesListDetail{private TreeView treeView = null;partial void CategoriesListDetail_InitializeDataWorkspace(List<IDataService> saveChangesTo){// Write your code here.}partial void CategoriesListDetail_Created(){// Write your code here.this.P_Name = "";this.RootNode.Load();this.FindControl("TreeViewControl").ControlAvailable += ((o, e) =>{treeView = e.Control as TreeView;treeView.BorderThickness = new Thickness(1);if (treeView.Items.Count == 0){foreach (var item in this.RootNode){TreeViewItem rootItem = new TreeViewItem() { Header = item.Name, Tag = item.Id };treeView.Items.Add(rootItem);}treeView.SelectedItemChanged += new RoutedPropertyChangedEventHandler<object>(TreeViewItem_SelectedItemChanged);}});}private void TreeViewItem_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e){var parentItem = e.NewValue as TreeViewItem;this.P_Name = (string)parentItem.Header;this.p_id = (int)parentItem.Tag;///when collection is refreshed the event SelectedNodeEmployees_Changed is hooked up///do not use Load method to avoid cachingthis.SelectedChildrenNodes.Refresh();}partial void SelectedChildrenNodes_Changed(NotifyCollectionChangedEventArgs e){if (treeView != null){Dispatchers.Main.BeginInvoke(() =>{var parentItem = treeView.SelectedItem as TreeViewItem;if (parentItem != null){if (parentItem.Items.Count == 0 && this.SelectedChildrenNodes.Count() > 0){foreach (var item in this.SelectedChildrenNodes) //.Where(act => act.Title != "???"){TreeViewItem newChildItem = new TreeViewItem() { Header = item.Name, Tag = item.Id };parentItem.Items.Add(newChildItem);}}}});}}}

  

 

總結

以上是生活随笔為你收集整理的lightswitch 添加 TreeView 控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。