コード例 #1
0
        void OnSamplesSelectionChanged(object oldValue, object newValue)
        {
#else
        void OnSamplesSelectionChanged(object sender, RoutedPropertyChangedEventArgs <object> args)
        {
            object newValue = args.NewValue;
#endif
            TreeViewItem tvi = (TreeViewItem)newValue;
            if (tvi != null && !tvi.HasItems)
            {
                string sampleName = (string)tvi.Tag;
                if (_lastSample != sampleName)
                {
                    LoadSample(sampleName);
                    _lastSample = sampleName;
                }
            }
        }

        void LoadSample(string sampleName)
        {
            _sampleSelector.IsEnabled = false;

            UIElement sample = (UIElement)LoadXaml(sampleName);

            if (_sampleContainer1.Child == null)
            {
                // Show container 1
                _sampleContainer1.Child    = sample;
                _showContainer1.Completed += OnShowSampleCompleted;
                _showContainer1.Begin();
            }
            else
            {
                // Show container 2
                _sampleContainer2.Child    = sample;
                _showContainer2.Completed += OnShowSampleCompleted;
                _showContainer2.Begin();
            }
        }

        object LoadXaml(string xaml)
        {
#if NOESIS
            NoesisXaml xamlUnity = (NoesisXaml)UnityEngine.Resources.Load(xaml, typeof(NoesisXaml));
            return(xamlUnity.Load());
#else
            object root;
            string path = "../../Assets/NoesisGUI/Samples/ControlGallery/Resources/" + xaml + ".xaml";
            using (FileStream stream = new FileStream(path, FileMode.Open))
            {
                root = XamlReader.Load(stream);
            }
            return(root);
#endif
        }

#if NOESIS
        void OnShowSampleCompleted(object sender, TimelineEventArgs e)
#else
        void OnShowSampleCompleted(object sender, EventArgs e)
#endif
        {
            if (_sampleContainer1.Visibility == Visibility.Visible)
            {
                // Container 1 shown
                _showContainer1.Completed -= OnShowSampleCompleted;
                _sampleContainer2.Child    = null;
            }
            else
            {
                // Container 2 shown
                _showContainer2.Completed -= OnShowSampleCompleted;
                _sampleContainer1.Child    = null;
            }

            _sampleSelector.IsEnabled = true;
        }

        void OnSizeChanged(object sender, SizeChangedEventArgs e)
        {
            Size newSize = e.NewSize;

            if (newSize.Width > newSize.Height)
            {
                // Landscape
                _selectorTopContainer.Child  = null;
                _selectorLeftContainer.Child = _selector;
                _selectorTop.Visibility      = Visibility.Collapsed;
                _selectorLeft.Visibility     = Visibility.Visible;
                _selectorTopExpand.IsChecked = false;
                _itemHeight.Height           = newSize.Width * 0.05f;
            }
            else
            {
                // Portrait
                _selectorLeftContainer.Child  = null;
                _selectorTopContainer.Child   = _selector;
                _selectorLeft.Visibility      = Visibility.Collapsed;
                _selectorTop.Visibility       = Visibility.Visible;
                _selectorLeftExpand.IsChecked = false;
                _itemHeight.Height            = newSize.Height * 0.05f;
            }
        }

        void OnSampleOverlayMouseDown(object sender, MouseButtonEventArgs e)
        {
            _selectorLeftExpand.IsChecked = false;
            _selectorTopExpand.IsChecked  = false;
        }

        #region Private members
        ComboBox _styleSelector;
        ResourceDictionary _noesisStyleResources;
        ResourceDictionary _simpleStyleResources;
        ResourceDictionary _windowsStyleResources;

        Grid _selector;
        TreeView _sampleSelector;
        string _lastSample;

        Viewbox _sampleContainer;
        Border _sampleContainer1;
        Border _sampleContainer2;
        Grid _sampleOverlay;

        Storyboard _showContainer1;
        Storyboard _showContainer2;

        Border _selectorTopContainer;
        StackPanel _selectorTop;
        ToggleButton _selectorTopExpand;

        Border _selectorLeftContainer;
        StackPanel _selectorLeft;
        ToggleButton _selectorLeftExpand;

        Decorator _itemHeight;
        #endregion
    }