/// <summary> /// ツリーとしてアイテムを追加していく. /// </summary> /// <param name="item"></param> /// <param name="parentViewItem"></param> private void AddItemsAsTree(DeviceItemVisual item, DeviceItemTreeViewItem parentViewItem) { if (item == null) { return; } var devViewItem = new DeviceItemTreeViewItem() { Visibility = item.DeviceItem.IsRoot ? Visibility.Visible : Visibility.Collapsed, Device = item, }; this.ItemsTreeView.Items.Add(devViewItem); if (parentViewItem != null) { System.Diagnostics.Debug.Assert(parentViewItem.Children != null); parentViewItem.Children.Add(devViewItem); } if (!item.DeviceItem.HasChildren) { return; } devViewItem.Children = new List <DeviceItemTreeViewItem>(item.DeviceItem.Children.Count); foreach (var child in item.DeviceItem.Children) { AddItemsAsTree(child.Data.Visual, devViewItem); } devViewItem.ChildrenVisible = true; }
public override int Compare(DeviceItemVisual x, DeviceItemVisual y) { object valX; object valY; x.DeviceItem.Data.Device.Properties.TryGetValue(this.propertyName, out valX); y.DeviceItem.Data.Device.Properties.TryGetValue(this.propertyName, out valY); if ((valX == null) && (valY == null)) { return(0); } if ((valX != null) && (valY == null)) { return(1); } if ((valX == null) && (valY != null)) { return(-1); } if (!(valX is T) || !(valY is T)) { throw new InvalidOperationException(); } return(this.comparer.Compare((T)valX, (T)valY)); }
/// <summary> /// デバイスのプロパティページに移動する. /// </summary> /// <param name="item"></param> private void NavigateToDeviceItemDetailPage(DeviceItemVisual item) { DeviceItemGroup.Instance.SelectedItemId = item.DeviceItem.Data.Device.Id; // 適切な移動先のページに移動し、新しいページを構成します。 // このとき、必要な情報をナビゲーション パラメーターとして渡します this.Frame.Navigate(typeof(DeviceItemDetailPage), item.DeviceItem.Data.Device.Id); }
/// <summary> /// 指定したアイテムが表示されるようにスクロールさせる. /// </summary> /// <param name="item"></param> public void ScrollIntoViewWithDeviceItemVisual(DeviceItemVisual item) { if (item == null) { return; } var selectedItem = this.ItemsTreeView.Items.FirstOrDefault( x => (x as DeviceItemTreeViewItem).Device.DeviceItem.Data.Device.Id.Equals(item.DeviceItem.Data.Device.Id)); if (selectedItem != null) { this.ItemsTreeView.SelectedItem = selectedItem; this.ItemsTreeView.ScrollIntoView(selectedItem); } }
/// <summary> /// DataPackageに共有するデータを設定する /// </summary> /// <param name="item">デバイス</param> /// <param name="data">DataPackage</param> /// <param name="textSource">共有するテキストの種類</param> internal static void SetDataPackage(this DeviceItemVisual item, DataPackage data, DataPackageTextSource textSource) { var res = Windows.UI.Xaml.Application.Current.Resources["MyStringResource"] as MyStringResources; if (item != null) { // title / description data.Properties.Title = res["ShareTitle"]; data.Properties.Description = String.Format(res["ShareDescriptionFormat"], item.DisplayName); // text switch (textSource) { case DataPackageTextSource.DisplayName: data.SetText(item.DisplayName); break; case DataPackageTextSource.AllProperties: data.SetText(String.Format("{0}\n\n{1}\n{2}\n\n{3}\n{4}", item.DisplayName, res["DetailColumnTitleDeviceProperty"], item.DevicePropertiesText, res["DetailColumnTitleDeviceContainerProperty"], item.ContainerPropertiesText)); break; } // bitmap if (item.DeviceThumbnail != null) { var strmThumbnail = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromStream(item.DeviceThumbnail); data.SetBitmap(strmThumbnail); data.Properties.Thumbnail = strmThumbnail; } } else { } }