渲染专题图制作

<navigation:Page x:Class="SilverlightApplication1.Page1" 
           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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
           mc:Ignorable="d"
           xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
           xmlns:esri="http://schemas.esri.com/arcgis/client/2009"
           xmlns:slData="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
           d:DesignWidth="640" d:DesignHeight="480"
           Title="Page1 Page">
    <Grid x:Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="140"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <esri:Map x:Name="MyMap" Grid.Row="1">
            <esri:ArcGISDynamicMapServiceLayer ID="PolygonLayer" 
                    Url="http://localhost/ArcGIS/rest/services/Map/AnHui/MapServer"/>
            <esri:FeatureLayer ID="TopoLayer" 
                    Url="http://localhost/ArcGIS/rest/services/Map/AnHui/MapServer/3"/>
            <esri:GraphicsLayer ID="MyGraphicsLayer" />


        </esri:Map>
        <Button Grid.Row="0" Height="40" Width="80" Margin="0,100,560,0" Name="Render" Content="渲染" Click="Render_Click"></Button>
        <StackPanel Grid.Row="1" Name="xuanran1" Visibility="Collapsed" Orientation="Vertical" Margin="15" HorizontalAlignment="Left" VerticalAlignment="Top" >
            <Grid x:Name="LegendGrid" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10,10,10,10" >
                <Path x:Name="LegendCollapsedTriangle" Canvas.ZIndex="100" Height="10" HorizontalAlignment="Right" Margin="0,19,15.375,0" VerticalAlignment="Top" 
                      Width="10" Fill="#995C90B2" Stretch="Fill" Stroke="#FF666666" Data="M85,25 L85,25 L87.5,30 L90,25 z" 
                      RenderTransformOrigin="3.083,-1.417" Visibility="Collapsed" StrokeThickness="0"/>
                <Path x:Name="LegendExpandedTriangle" Canvas.ZIndex="100" Height="10" HorizontalAlignment="Right" Margin="0,16.931,15.294,0" VerticalAlignment="Top" Width="10" Stretch="Fill" 
                      Stroke="#FF666666" Data="M85,30 L85,30 L87.5,25 L90,30 z" RenderTransformOrigin="3.083,-1.417" 
                      Fill="#995C90B2" StrokeThickness="0"/>
                <Rectangle RadiusX="10" RadiusY="10" Fill="#22000000" Margin="0,4,0,0" />
                <Rectangle Stroke="Gray"  RadiusX="10" RadiusY="10" Fill="#77919191" Margin="0,0,0,5" />
                <Rectangle Fill="#DDFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,10,10,15" />
                <TextBlock x:Name="LegendCollapsedTitle" TextAlignment="Center" Text="Legend" Margin="30.331,15.069,29.669,0" FontWeight="Bold" Height="16" 
                           VerticalAlignment="Top" RenderTransformOrigin="0.501,1.017" Visibility="Collapsed" />
                <StackPanel Orientation="Vertical" Margin="25" HorizontalAlignment="Center" VerticalAlignment="Top" >
                    <TextBlock x:Name="LegendTitle" HorizontalAlignment="Center" TextAlignment="Center" Text="Legend" Margin="5" FontWeight="Bold" />
                    <StackPanel x:Name="LegendStackPanel" HorizontalAlignment="Center" Margin="5" />
                </StackPanel>
            </Grid>
        </StackPanel>


        <StackPanel Grid.Row="1" Name="xuanran2"  Visibility="Collapsed" Orientation="Vertical" Margin="15" HorizontalAlignment="Right" VerticalAlignment="Top" >
            <Grid x:Name="ClassGrid" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,10,10,0" >
                <Path x:Name="ClassCollapsedTriangle" Canvas.ZIndex="100" Height="10" HorizontalAlignment="Right" Margin="0,19,15.375,0" VerticalAlignment="Top" Width="10" Fill="#995C90B2" 
                      Stretch="Fill" Stroke="#FF666666" Data="M85,25 L85,25 L87.5,30 L90,25 z" RenderTransformOrigin="3.083,-1.417" Visibility="Collapsed" 
                      StrokeThickness="0"/>
                <Path x:Name="ClassExpandedTriangle" Canvas.ZIndex="100" Height="10" HorizontalAlignment="Right" Margin="0,16.931,15.294,0" VerticalAlignment="Top" Width="10" Stretch="Fill" 
                      Stroke="#FF666666" Data="M85,30 L85,30 L87.5,25 L90,30 z" RenderTransformOrigin="3.083,-1.417" Fill="#995C90B2" 
                      StrokeThickness="0"/>
                <Rectangle Fill="#22000000" RadiusX="10" RadiusY="10" Margin="0,4,0,0" />
                <Rectangle Fill="#77919191" Stroke="Gray"  RadiusX="10" RadiusY="10" Margin="0,0,0,5" />
                <Rectangle Fill="#DDFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,10,10,15" />
                <TextBlock x:Name="ClassCollapsedTitle" TextAlignment="Center" Text="Thematic Properties" Margin="30.331,15.069,29.669,0" FontWeight="Bold" 
                           Height="16" VerticalAlignment="Top" RenderTransformOrigin="0.501,1.017" Visibility="Collapsed" />
                <StackPanel Orientation="Vertical" Margin="25" HorizontalAlignment="Center" VerticalAlignment="Top" >
                    <TextBlock HorizontalAlignment="Center" TextAlignment="Center" Text="Thematic Properties" Margin="5" FontWeight="Bold" />
                    <TextBlock HorizontalAlignment="Left" TextAlignment="Center" Text="Theme:" Margin="0,5,0,0"  />
                    <ComboBox x:Name="FieldCombo" HorizontalAlignment="Left" SelectionChanged="FieldCombo_SelectionChanged" MaxWidth="200" Width="150"/>
                    <TextBlock HorizontalAlignment="Left" TextAlignment="Center" Text="Classes:" Margin="0,5,0,0"  />
                    <ComboBox x:Name="ClassCountCombo" HorizontalAlignment="Left" SelectionChanged="ClassCountCombo_SelectionChanged" SelectedIndex="0" >
                        <ComboBoxItem Content="6" Tag="6" />
                        <ComboBoxItem Content="5" Tag="5" />
                        <ComboBoxItem Content="4" Tag="4" />
                        <ComboBoxItem Content="3" Tag="3" />
                    </ComboBox>
                    <TextBlock HorizontalAlignment="Left" TextAlignment="Center" Text="Classification Type:" Margin="0,5,0,0"  />
                    <ComboBox x:Name="ClassTypeCombo" HorizontalAlignment="Left" SelectionChanged="ClassTypeCombo_SelectionChanged" SelectedIndex="0" >
                        <ComboBoxItem Content="Quantile" />
                        <ComboBoxItem Content="Equal Interval" />
                    </ComboBox>
                    <TextBlock HorizontalAlignment="Left" TextAlignment="Center" Text="Color Theme:" Margin="0,5,0,0"  />
                    <ComboBox x:Name="ColorBlendCombo" HorizontalAlignment="Left" SelectionChanged="ColorBlendCombo_SelectionChanged"  SelectedIndex="0" >
                        <ComboBoxItem Content="Blue" Background="Blue" />
                        <ComboBoxItem Content="Red" Background="Red" />
                        <ComboBoxItem Content="Green" Background="Green" />
                        <ComboBoxItem Content="Yellow" Background="Yellow" />
                        <ComboBoxItem Content="Magenta" Background="Magenta" />
                        <ComboBoxItem Content="Cyan" Background="Cyan" />
                        <ComboBoxItem Content="MultiColor" />
                    </ComboBox>
                    <Button x:Name="RenderButton" IsEnabled="False" Content="Render " Click="RenderButton_Click" Width="100" Margin="0,5,0,0" />
                </StackPanel>
            </Grid>
        </StackPanel>


        


    </Grid>
</navigation:Page>
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;
using System.Windows.Navigation;
using ESRI.ArcGIS.Client;
using ESRI.ArcGIS.Client.FeatureService.Symbols;
using ESRI.ArcGIS.Client.Tasks;

namespace SilverlightApplication1
{
    public partial class Page1 : Page
    {
        List<ThematicItem> ThematicItemList = new List<ThematicItem>();
        List<List<SolidColorBrush>> ColorList = new List<List<SolidColorBrush>>();
        int _colorShadeIndex = 0;
        int _thematicListIndex = 0;
        FeatureSet _featureSet = null;
        int _classType = 0; // EqualInterval = 1; Quantile = 0;
        int _classCount = 6;
        int _lastGeneratedClassCount = 0;
        bool _legendGridCollapsed;
        bool _classGridCollapsed;

        public Page1()
        {
            InitializeComponent();
            MyMap.PropertyChanged += MyMap_PropertyChanged;

        }
        void MyMap_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "SpatialReference")
            {
                MyMap.PropertyChanged -= MyMap_PropertyChanged;

                _legendGridCollapsed = false;
                _classGridCollapsed = false;

                LegendCollapsedTriangle.MouseLeftButtonUp += Triangle_MouseLeftButtonUp;
                LegendExpandedTriangle.MouseLeftButtonUp += Triangle_MouseLeftButtonUp;
                ClassCollapsedTriangle.MouseLeftButtonUp += Triangle_MouseLeftButtonUp;
                ClassExpandedTriangle.MouseLeftButtonUp += Triangle_MouseLeftButtonUp;

                // Get start value for number of classifications in XAML.
                _lastGeneratedClassCount = Convert.ToInt32(((ComboBoxItem)ClassCountCombo.SelectedItem).Content);

                // Set query where clause to include features with an area greater than 70 square miles.  This 
                // will effectively exclude the District of Columbia from attributes to avoid skewing classifications.
                ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query()
                {
                    Where = "1=1",
                    OutSpatialReference = MyMap.SpatialReference,
                    ReturnGeometry = true
                };
                query.OutFields.Add("*");

                QueryTask queryTask =
                    new QueryTask("http://localhost/ArcGIS/rest/services/Map/AnHui/MapServer/3");

                queryTask.ExecuteCompleted += (evtsender, args) =>
                {
                    if (args.FeatureSet == null)
                        return;
                    _featureSet = args.FeatureSet;
                    SetRangeValues();
                    RenderButton.IsEnabled = true;
                };

                queryTask.ExecuteAsync(query);

                CreateColorList();
                CreateThematicList();
            }
        }

        public struct ThematicItem
        {
            public string Name { get; set; }
            public string Description { get; set; }
            public string CalcField { get; set; }
            public double Min { get; set; }
            public double Max { get; set; }
            public string MinName { get; set; }
            public string MaxName { get; set; }
            public List<double> RangeStarts { get; set; }

        }

        private void CreateColorList()
        {
            ColorList = new List<List<SolidColorBrush>>();

            List<SolidColorBrush> BlueShades = new List<SolidColorBrush>();
            List<SolidColorBrush> RedShades = new List<SolidColorBrush>();
            List<SolidColorBrush> GreenShades = new List<SolidColorBrush>();
            List<SolidColorBrush> YellowShades = new List<SolidColorBrush>();
            List<SolidColorBrush> MagentaShades = new List<SolidColorBrush>();
            List<SolidColorBrush> CyanShades = new List<SolidColorBrush>();

            int rgbFactor = 255 / _classCount;

            for (int j = 0; j < 256; j = j + rgbFactor)
            {
                BlueShades.Add(new SolidColorBrush(Color.FromArgb(192, (byte)j, (byte)j, 255)));
                RedShades.Add(new SolidColorBrush(Color.FromArgb(192, 255, (byte)j, (byte)j)));
                GreenShades.Add(new SolidColorBrush(Color.FromArgb(192, (byte)j, 255, (byte)j)));
                YellowShades.Add(new SolidColorBrush(Color.FromArgb(192, 255, 255, (byte)j)));
                MagentaShades.Add(new SolidColorBrush(Color.FromArgb(192, 255, (byte)j, 255)));
                CyanShades.Add(new SolidColorBrush(Color.FromArgb(192, (byte)j, 255, 255)));
            }

            ColorList.Add(BlueShades);
            ColorList.Add(RedShades);
            ColorList.Add(GreenShades);
            ColorList.Add(YellowShades);
            ColorList.Add(MagentaShades);
            ColorList.Add(CyanShades);

            foreach (List<SolidColorBrush> brushList in ColorList)
            {
                brushList.Reverse();
            }

            List<SolidColorBrush> MixedShades = new List<SolidColorBrush>();
            if (_classCount > 5) MixedShades.Add(new SolidColorBrush(Color.FromArgb(192, 0, 255, 255)));
            if (_classCount > 4) MixedShades.Add(new SolidColorBrush(Color.FromArgb(192, 255, 0, 255)));
            if (_classCount > 3) MixedShades.Add(new SolidColorBrush(Color.FromArgb(192, 255, 255, 0)));
            MixedShades.Add(new SolidColorBrush(Color.FromArgb(192, 0, 255, 0)));
            MixedShades.Add(new SolidColorBrush(Color.FromArgb(192, 0, 0, 255)));
            MixedShades.Add(new SolidColorBrush(Color.FromArgb(192, 255, 0, 0)));
            ColorList.Add(MixedShades);

            _lastGeneratedClassCount = _classCount;
        }

        private void CreateThematicList()
        {
            ThematicItemList.Add(new ThematicItem() { Name = "Population", Description = "Population", CalcField = "" });
         
            foreach (ThematicItem items in ThematicItemList)
            {
                FieldCombo.Items.Add(items.Description);
            }
            FieldCombo.SelectedIndex = 0;
        }

        private void SetRangeValues()
        {
            GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;

            // if necessary, update ColorList based on current number of classes.
            if (_lastGeneratedClassCount != _classCount) CreateColorList();

            // Field on which to generate a classification scheme.  
            ThematicItem thematicItem = ThematicItemList[_thematicListIndex];

            // Calculate value for classification scheme
            bool useCalculatedValue = !string.IsNullOrEmpty(thematicItem.CalcField);

            // Store a list of values to classify
            List<double> valueList = new List<double>();

            // Get range, min, max, etc. from features
            for (int i = 0; i < _featureSet.Features.Count; i++)
            {
                Graphic graphicFeature = _featureSet.Features[i];

                double graphicValue = Convert.ToDouble(graphicFeature.Attributes[thematicItem.Name]);
                string graphicName = graphicFeature.Attributes["Name"].ToString();

                if (useCalculatedValue)
                {
                    double calcVal = Convert.ToDouble(graphicFeature.Attributes[thematicItem.CalcField]);
                    graphicValue = Math.Round(graphicValue / calcVal * 100, 2);
                }

                if (i == 0)
                {
                    thematicItem.Min = graphicValue;
                    thematicItem.Max = graphicValue;
                    thematicItem.MinName = graphicName;
                    thematicItem.MaxName = graphicName;
                }
                else
                {
                    if (graphicValue < thematicItem.Min) { thematicItem.Min = graphicValue; thematicItem.MinName = graphicName; }
                    if (graphicValue > thematicItem.Max) { thematicItem.Max = graphicValue; thematicItem.MaxName = graphicName; }
                }

                valueList.Add(graphicValue);
            }

            // Set up range start values
            thematicItem.RangeStarts = new List<double>();

            double totalRange = thematicItem.Max - thematicItem.Min;
            double portion = totalRange / _classCount;

            thematicItem.RangeStarts.Add(thematicItem.Min);
            double startRangeValue = thematicItem.Min;

            // Equal Interval
            if (_classType == 1)
            {
                for (int i = 1; i < _classCount; i++)
                {
                    startRangeValue += portion;
                    thematicItem.RangeStarts.Add(startRangeValue);
                }
            }
            // Quantile
            else
            {
                // Enumerator of all values in ascending order
                IEnumerable<double> valueEnumerator =
                from aValue in valueList
                orderby aValue //"ascending" is default
                select aValue;

                int increment = Convert.ToInt32(Math.Ceiling(_featureSet.Features.Count / _classCount));
                for (int i = increment; i < valueList.Count; i += increment)
                {
                    double value = valueEnumerator.ElementAt(i);
                    thematicItem.RangeStarts.Add(value);
                }
            }

            // Create graphic features and set symbol using the class range which contains the value 
            List<SolidColorBrush> brushList = ColorList[_colorShadeIndex];
            if (_featureSet != null && _featureSet.Features.Count > 0)
            {
                // Clear previous graphic features
                graphicsLayer.Graphics.Clear();

                for (int i = 0; i < _featureSet.Features.Count; i++)
                {
                    Graphic graphicFeature = _featureSet.Features[i];

                    double graphicValue = Convert.ToDouble(graphicFeature.Attributes[thematicItem.Name]);
                    if (useCalculatedValue)
                    {
                        double calcVal = Convert.ToDouble(graphicFeature.Attributes[thematicItem.CalcField]);
                        graphicValue = Math.Round(graphicValue / calcVal * 100, 2);
                    }

                    int brushIndex = GetRangeIndex(graphicValue, thematicItem.RangeStarts);

                    SimpleFillSymbol symbol = new SimpleFillSymbol()
                    {
                        Fill = brushList[brushIndex],
                        BorderBrush = new SolidColorBrush(Colors.Transparent),
                        BorderThickness = 1
                    };

                    Graphic graphic = new Graphic();
                    graphic.Geometry = graphicFeature.Geometry;
                    graphic.Attributes.Add("Name", graphicFeature.Attributes["Name"].ToString());
                    graphic.Attributes.Add("Description", thematicItem.Description);
                    graphic.Attributes.Add("Value", graphicValue.ToString());
                    graphic.Symbol = symbol;

                    graphicsLayer.Graphics.Add(graphic);
                }


                // Create new legend with ranges and swatches.
                LegendStackPanel.Children.Clear();

                ListBox legendList = new ListBox();
                LegendTitle.Text = thematicItem.Description;

                for (int c = 0; c < _classCount; c++)
                {
                    Rectangle swatchRect = new Rectangle()
                    {
                        Width = 20,
                        Height = 20,
                        Stroke = new SolidColorBrush(Colors.Black),
                        Fill = brushList[c]
                    };

                    TextBlock classTextBlock = new TextBlock();

                    // First classification
                    if (c == 0)
                        classTextBlock.Text = String.Format("  Less than {0}", Math.Round(thematicItem.RangeStarts[1], 2));
                    // Last classification
                    else if (c == _classCount - 1)
                        classTextBlock.Text = String.Format("  {0} and above", Math.Round(thematicItem.RangeStarts[c], 2));
                    // Middle classifications
                    else
                        classTextBlock.Text = String.Format("  {0} to {1}", Math.Round(thematicItem.RangeStarts[c], 2), Math.Round(thematicItem.RangeStarts[c + 1], 2));

                    StackPanel classStackPanel = new StackPanel();
                    classStackPanel.Orientation = Orientation.Horizontal;
                    classStackPanel.Children.Add(swatchRect);
                    classStackPanel.Children.Add(classTextBlock);

                    legendList.Items.Add(classStackPanel);
                }

                TextBlock minTextBlock = new TextBlock();
                StackPanel minStackPanel = new StackPanel();
                minStackPanel.Orientation = Orientation.Horizontal;
                minTextBlock.Text = String.Format("Min: {0} ({1})", thematicItem.Min, thematicItem.MinName);
                minStackPanel.Children.Add(minTextBlock);
                legendList.Items.Add(minStackPanel);

                TextBlock maxTextBlock = new TextBlock();
                StackPanel maxStackPanel = new StackPanel();
                maxStackPanel.Orientation = Orientation.Horizontal;
                maxTextBlock.Text = String.Format("Max: {0} ({1})", thematicItem.Max, thematicItem.MaxName);
                maxStackPanel.Children.Add(maxTextBlock);
                legendList.Items.Add(maxStackPanel);

                LegendStackPanel.Children.Add(legendList);
            }
        }

        private int GetRangeIndex(double val, List<double> ranges)
        {
            int index = _classCount - 1;
            for (int r = 0; r < _classCount - 1; r++)
            {
                if (val >= ranges[r] && val < ranges[r + 1]) index = r;
            }
            return index;
        }

        public struct Values
        {
            public string Name { get; set; }
            public string Description { get; set; }
            public string Value { get; set; }
        }

        private void ClassTypeCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ClassTypeCombo != null)
                _classType = ClassTypeCombo.SelectedIndex;
        }

        private void ColorBlendCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ColorBlendCombo != null)
                _colorShadeIndex = ColorBlendCombo.SelectedIndex;
        }

        private void ClassCountCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ClassCountCombo != null)
            {
                ComboBoxItem item = ClassCountCombo.SelectedItem as ComboBoxItem;
                _classCount = Convert.ToInt32(item.Content);
            }
        }

        private void FieldCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (FieldCombo != null)
                _thematicListIndex = FieldCombo.SelectedIndex;
        }

        private void RenderButton_Click(object sender, RoutedEventArgs e)
        {
            SetRangeValues();
        }

        void Triangle_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            FrameworkElement source = sender as FrameworkElement;

            switch (source.Name)
            {
                case "ClassExpandedTriangle":
                case "ClassCollapsedTriangle":
                    if (_classGridCollapsed)
                    {
                        ClassExpandedTriangle.Visibility = Visibility.Visible;
                        ClassCollapsedTriangle.Visibility = Visibility.Collapsed;
                        ClassCollapsedTitle.Visibility = Visibility.Collapsed;
                        ClassGrid.Height = Double.NaN;
                        ClassGrid.UpdateLayout();
                    }
                    else
                    {
                        ClassCollapsedTriangle.Visibility = Visibility.Visible;
                        ClassExpandedTriangle.Visibility = Visibility.Collapsed;
                        ClassCollapsedTitle.Visibility = Visibility.Visible;
                        ClassGrid.Height = 50;
                    }
                    _classGridCollapsed = !_classGridCollapsed;
                    break;
                case "LegendExpandedTriangle":
                case "LegendCollapsedTriangle":
                    if (_legendGridCollapsed)
                    {
                        LegendExpandedTriangle.Visibility = Visibility.Visible;
                        LegendCollapsedTriangle.Visibility = Visibility.Collapsed;
                        LegendCollapsedTitle.Visibility = Visibility.Collapsed;
                        LegendGrid.Height = Double.NaN;
                        LegendGrid.UpdateLayout();
                    }
                    else
                    {
                        LegendCollapsedTriangle.Visibility = Visibility.Visible;
                        LegendExpandedTriangle.Visibility = Visibility.Collapsed;
                        LegendCollapsedTitle.Visibility = Visibility.Visible;
                        LegendGrid.Height = 50;
                    }
                    _legendGridCollapsed = !_legendGridCollapsed;
                    break;
            }
        }


        // 当用户导航到此页面时执行。
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }

        private void Render_Click(object sender, RoutedEventArgs e)
        {
            if(this.xuanran1.Visibility==Visibility.Collapsed & this.xuanran2.Visibility==Visibility.Collapsed)
            {
                this.xuanran1.Visibility = Visibility.Visible;
                this.xuanran2.Visibility = Visibility.Visible;
            }
            else
            {
                this.xuanran1.Visibility = Visibility.Collapsed;
                this.xuanran2.Visibility = Visibility.Collapsed;
            }

        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值