Silverlight - 시공 계획 일 보고서 (2)

21757 단어 silverlight
Silverlight - 시공 계획 일 보고서 (1)
최근 에 줄곧 잔업 을 하고 있어 서 기본적으로 개인 시간 이 없다.그래서 업데이트 가 즉각 적 이지 않 습 니 다.
긴 말 하지 말고 인터페이스 코드 부터 시작 합 시다.인터페이스 코드 는 매우 간단 합 니 다. 다음 과 같 습 니 다.
<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"  xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"  x:Class="PlansView.ShowPlans"

    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"

    xmlns:BubbleCremeTheme="System.Windows.Controls.Theming;assembly=System.Windows.Controls.Theming.BubbleCremeTheme"

    mc:Ignorable="d"

    d:DesignHeight="300" d:DesignWidth="400" Loaded="UserControl_Loaded">

    <toolkit:BubbleCremeTheme>

        <StackPanel   Name="stackPanel1" FlowDirection="LeftToRight" HorizontalAlignment="Left">

            <StackPanel Orientation="Vertical">

                <TextBlock Height="23" Name="txtTitle" HorizontalAlignment="Center" Text="  " FontSize="18" FontWeight="Bold" Opacity="0.7" RenderTransformOrigin="0.5,0.5" >

                	<TextBlock.RenderTransform>

                		<CompositeTransform/>

                	</TextBlock.RenderTransform>

        	    <TextBlock.Foreground>

        		    <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">

        			    <GradientStop Color="Black" Offset="1"/>

        			    <GradientStop Color="#FFE49C9C"/>

        		    </LinearGradientBrush>

        	    </TextBlock.Foreground>

                </TextBlock>

                <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">

                    

                    <Button Content="       " Name="btnFilishAll" Width="130" Margin="5,0,5,0" Click="btnFilishAll_Click" />

                    <Button Content="  " Name="BtnFullScreen" Width="100" Margin="5,0,5,0" Click="BtnFullScreen_Click" />

                    <Button Content="  " Name="btnSubmit" Width="100"  Click="Button_Click" Margin="5,0,5,0"/>

                </StackPanel>

                <ScrollViewer HorizontalContentAlignment="Left" HorizontalAlignment="Left" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" MaxHeight="513">

                	<ScrollViewer.BorderBrush>

                		<LinearGradientBrush EndPoint="0.5,1.5" StartPoint="0.5,0">

                			<GradientStop Color="#FFE0E3BC"/>

                			<GradientStop Color="#FF6C6C5C" Offset="1"/>

                		</LinearGradientBrush>

                	</ScrollViewer.BorderBrush>

                    <Border BorderBrush="#FF333333" BorderThickness="2" Background="#FFC1C1C1" >

                        <Grid x:Name="gdPlans" Background="#FFC1C1C1" MouseRightButtonDown="gdPlans_MouseRightButtonDown">



                        </Grid>

                    </Border>

                </ScrollViewer>

            </StackPanel>

        </StackPanel>

    </toolkit:BubbleCremeTheme>

</UserControl>


주의해 야 할 것 은 Silverlight 4.0 공구 꾸러미 에 있 는 Bubble Creme Theme 테 마 를 사용 했다 는 점 이다.사용 할 때 "xmlns: Bubble Creme Theme =" System. Windows. Control. Theming; assembly = System. Windows. Control. Theme "과 같은 인용 에 주의 하 십시오.그리고 주의해 야 할 것 은 ScrollViewer 를 사용 하여 스크롤 바 를 만 들 고 ScrollViewer 에 Border 컨트롤 을 넣 어 테 두 리 를 그립 니 다.Border 컨트롤 에 Grid 컨트롤 을 사 용 했 습 니 다.모든 데 이 터 는 Grid 컨트롤 을 기반 으로 생 성 됩 니 다.
인터페이스 요소 가 정의 되 었 습 니 다.다음은 다음 과 같은 공공 속성:
#region     

        /// <summary>

        ///     (day、week、month)

        /// </summary>

        public string DateType { get; set; }

        /// <summary>

        ///   

        /// </summary>

        public int RowIndex { get; set; }

        /// <summary>

        ///     

        /// </summary>

        public DateTime StartDate { get; set; }

        /// <summary>

        ///       

        /// </summary>

        public int DateColCount { get; set; }

        /// <summary>

        ///      

        /// </summary>

        public int NameColumns { get; set; }

        /// <summary>

        ///     

        /// </summary>

        public string[] PlanHeads { get; set; }

        /// <summary>

        ///       

        /// </summary>

        public Color DayBackGroundColor { get; set; }

        /// <summary>

        ///   

        /// </summary>

        List<PlansData> LstPlansData { get; set; }

        /// <summary>

        ///              

        /// </summary>

        public bool HasShowSetFilishTip { get; set; }

        Dictionary<string, string> dicInitParams;

        //   (     )

        private static List<ImageBrush> RowBackGroundLst;

        private ImageBrush FilishImageBrush;

        /// <summary>

        ///     (  7)

        /// </summary>

        int _weekDayCount;

        #endregion
      ,              ?    InitParams。     :
 
        public ShowPlans()

        {

            try

            {

                InitializeComponent();

                SetInitialValue();

                #region         

                if (DateType == "day" && txtTitle.Text.Length > 0)

                {

                    txtTitle.Text += string.Format("({0}~{1})", StartDate.ToShortDateString(), StartDate.AddDays(DateColCount).ToShortDateString());

                } 

                #endregion

            }

            catch (Exception ex)

            {

                MessageBox.Show("       :" + ex.Message, "  ", MessageBoxButton.OK);

            }

        }

        #region      

        /// <summary>

        ///      

        /// StartDate:    ,       

        /// DateType:    ,    (day、week、month),   day

        /// DateColCount:    ,day   30,week   10,month   12

        /// Title:  

        /// PlanHeads:    ,    “;”  。   Url  。

        /// Data:  。   Json,  Url  。     PlansData。

        /// DayBackGroundColor:      

        /// WeekDayCount:      (  7)

        /// OnlyResponseHasEdit:        

        /// </summary>

        private void SetInitialValue()

        {

            RowIndex = 0;

            #region      

            StartDate = DateTime.Now;

            DateColCount = 30;

            DateType = "day";

            NameColumns = 1;

            DayBackGroundColor = Colors.White;

            HasShowSetFilishTip = false;

            #region     

            RowBackGroundLst = new List<ImageBrush>()

            {

                new ImageBrush()

                {

                    ImageSource=new BitmapImage(new Uri("plink.png", UriKind.Relative))

                },

                new ImageBrush()

                {

                    ImageSource=new BitmapImage(new Uri("blue.png", UriKind.Relative))

                },

                new ImageBrush()

                {

                    ImageSource=new BitmapImage(new Uri("red.png", UriKind.Relative))

                },

                new ImageBrush()

                {

                    ImageSource=new BitmapImage(new Uri("green.png", UriKind.Relative))

                },

            };

            FilishImageBrush =

                new ImageBrush()

               {

                   ImageSource = new BitmapImage(new Uri("red.png", UriKind.Relative))

               };

            #endregion

            #endregion

            #region        

            dicInitParams = App.Current.Host.InitParams as Dictionary<string, string>;

            if (dicInitParams != null && dicInitParams.Count > 0)

            {

                //  

                if (dicInitParams.ContainsKey("Title"))

                    txtTitle.Text = dicInitParams["Title"] ?? string.Empty;

                else

                    txtTitle.Visibility = Visibility.Collapsed;

                //      

                if (dicInitParams.ContainsKey("StartDate"))

                    StartDate = Convert.ToDateTime(dicInitParams["StartDate"]);

                //     (  DateType=week   )

                _weekDayCount = 7;

                //      

                if (dicInitParams.ContainsKey("DayBackGroundColor"))

                    DayBackGroundColor = ReturnColorFromString(dicInitParams["DayBackGroundColor"]);

                //    

                if (dicInitParams.ContainsKey("DateType"))

                {

                    DateType = dicInitParams["DateType"];

                    if (DateType == "week")

                    {

                        if (!dicInitParams.ContainsKey("DateColCount"))

                        {

                            DateColCount = 10;

                        }

                        if (dicInitParams.ContainsKey("WeekDayCount"))

                        {

                            _weekDayCount = Convert.ToInt32(dicInitParams["WeekDayCount"]);

                        }

                    }

                    else if (DateType == "month")

                    {

                        if (!dicInitParams.ContainsKey("DateColCount"))

                        {

                            DateColCount = 12;

                        }

                    }

                }

                //     

                if (dicInitParams.ContainsKey("DateColCount"))

                    DateColCount = Convert.ToInt32(dicInitParams["DateColCount"]);



                //     

                if (dicInitParams.ContainsKey("PlanHeads"))

                {

                    PlanHeads = HttpUtility.UrlDecode(dicInitParams["PlanHeads"]).Split(';');

                    NameColumns = PlanHeads.Length;

                }

            #endregion

            }

            else

            {

                MessageBox.Show("       ");

            }

        }

        #endregion
      ,        ?    ——《Silverlight - 시공 계획 일 보고서 (1)》        。   Silverlight     PlansData ,      :
using System;

using System.Collections.Generic;



namespace PlansView

{

    /// <summary>

    ///   

    /// </summary>

    public class PlansData

    {

        public List<Plan> LstPlan { get; set; }

        /// <summary>

        ///       

        /// </summary>

        public List<PlanDate> LstPlanDate { get; set; }



    }

    /// <summary>

    ///   

    /// </summary>

    public class Plan

    {

        /// <summary>

        ///     

        /// </summary>

        public string PlanName { get; set; }

    }

    /// <summary>

    ///     

    /// </summary>

    public class PlanDate

    {

        /// <summary>

        ///   

        /// </summary>

        public string Explain { get; set; }

        /// <summary>

        ///     

        /// </summary>

        public DateTime? StartDate { get; set; }

        /// <summary>

        ///     

        /// </summary>

        public DateTime? EndDate { get; set; }

        /// <summary>

        ///       

        /// </summary>

        public DateTime? MinDate { get; set; }

        /// <summary>

        ///       

        /// </summary>

        public DateTime? MaxDate { get; set; }

        /// <summary>

        ///     

        /// </summary>

        public bool IsReadOnly { get; set; }

        /// <summary>

        ///           

        /// </summary>

        public bool CanGreaterThanNow { get; set; }

        /// <summary>

        ///      

        /// </summary>

        public bool HasEdit { get; set; }

        /// <summary>

        ///      

        /// </summary>

        public bool IsFlish { get; set; }

        /// <summary>

        ///       

        /// </summary>

        public bool AllowCancel { get; set; }

        /// <summary>

        ///       (     ,      )

        /// </summary>

        public bool AllowBlank { get; set; }

        /// <summary>

        ///      

        /// </summary>

        public string Tag { get; set; }

    }

}


이 종 류 는 데이터 줄 을 제어 하 는 데 쓰 인 다.시작 시간 과 끝 시간 은 표시 되 는 막대 모양 의 길 이 를 조절 합 니 다.다음은 JSON. NET 구성 요소 http://james.newtonking.com/projects/json-net.aspx 를 사용 해 야 합 니 다.
이 구성 요 소 를 다운로드 한 후, Json. Silverlight (Silverlight 의 JSON 구성 요 소 를 사용 하기 불편 함) 를 참조 하 십시오.이렇게 하면 우 리 는 JSON 문자열 을 대상 으로 역 직렬 화 할 수도 있 고 대상 을 JSON 문자열 로 직렬 화 할 수도 있다.따라서 InitParams 에서 JSON 문자열 을 입력 한 다음 에 반 서열 화 하면 됩 니 다.다음 과 같다.
        #region     

        private void LoadData()

        {

            if (dicInitParams != null && dicInitParams.ContainsKey("Data"))

                LstPlansData = JsonConvert.DeserializeObject<List<PlansData>>(HttpUtility.UrlDecode(dicInitParams["Data"]));

        }

        #endregion

그러면 InitParams 는 어떻게 설정 합 니까? 테스트 페이지 (. aspx 페이지) 페이지 요 소 는 다음 과 같 습 니 다.
    <form id="form1" runat="server" style="height:100%">

    <div id="silverlightControlHost">

        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">

		  <param name="source" value="ClientBin/PlansView.xap"/>

		  <param name="onError" value="onSilverlightError" />

		  <param name="background" value="white" />

		  <param name="minRuntimeVersion" value="4.0.50826.0" />

		  <param name="autoUpgrade" value="true" />

          <param name="initParams" value='<%=InitParams %>' />

		  <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">

 			  <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="   Microsoft Silverlight" style="border-style:none"/>

		  </a>

	    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>

    </form>

나중에 코드 에서 InitParams 는 이렇게 정의 합 니 다.
        public string InitParams { get; set; }

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                try

                {

                    InitParams = "Title=    ,DateColCount=80,PlanHeads=    ,Data=";

                    List<PlansData> _lstPlansData = new List<PlansData>();

                    LoadData(_lstPlansData);

                    InitParams += HttpUtility.UrlEncode(JsonConvert.SerializeObject(_lstPlansData, Formatting.Indented));

                    //LogManager.WriteTraceLog(JsonConvert.SerializeObject(_lstPlansData, Formatting.Indented));



                }

                catch (Exception ex)

                {

                    LogManager.WriteErrorLog(ex);

                }

            }

        }



        private static void LoadData(List<PlansData> _lstPlansData)

        {

            PlansData _planData1 = new PlansData()

            {

                LstPlan = new List<Plan>()

                {

                    new Plan(){PlanName="       "}

                },

                LstPlanDate = new List<PlanDate>()

                {

                        new PlanDate(){StartDate=DateTime.Now,EndDate=DateTime.Now.AddDays(3),Explain="    ",IsReadOnly=true},

                        new PlanDate(){StartDate=DateTime.Now.AddDays(1),EndDate=DateTime.Now.AddDays(4),Explain="    ",CanGreaterThanNow=true},

                        new PlanDate(){StartDate=DateTime.Now.AddDays(2),EndDate=DateTime.Now.AddDays(5),Explain="    ",IsFlish=true,AllowBlank=false}

                }

            };

            _lstPlansData.Add(_planData1);

            PlansData _planData2 = new PlansData()

            {

                LstPlan = new List<Plan>()

                {

                    new Plan(){PlanName="    ,  "}

                },

                LstPlanDate = new List<PlanDate>()

                {

                    new PlanDate(){StartDate=DateTime.Now.AddDays(5),EndDate=DateTime.Now.AddDays(16),Explain="    ",CanGreaterThanNow=true},

                    new PlanDate(){StartDate=DateTime.Now.AddDays(4),EndDate=DateTime.Now.AddDays(15),Explain="    "}

                }

            };

            _lstPlansData.Add(_planData2);

            PlansData _planData3 = new PlansData()

            {

                LstPlan = new List<Plan>()

                {

                    new Plan(){PlanName="     "}

                },

                LstPlanDate = new List<PlanDate>()

                {

                    new PlanDate(){StartDate=DateTime.Now.AddDays(5),EndDate=DateTime.Now.AddDays(18),Explain="    ",IsReadOnly=true,CanGreaterThanNow=true},

                    new PlanDate(){StartDate=DateTime.Now.AddDays(8),EndDate=DateTime.Now.AddDays(12),Explain="    "},

                }

            };

            _lstPlansData.Add(_planData3);

            PlansData _planData4 = new PlansData()

            {

                LstPlan = new List<Plan>()

                {

                    new Plan(){PlanName="     "}

                },

                LstPlanDate = new List<PlanDate>()

                {

                    new PlanDate(){StartDate=DateTime.Now.AddDays(15),EndDate=DateTime.Now.AddDays(18),Explain="    ",IsReadOnly=true},

                    new PlanDate(){StartDate=DateTime.Now.AddDays(19),EndDate=DateTime.Now.AddDays(25),Explain="    "},

                    new PlanDate(){StartDate=DateTime.Now,EndDate=DateTime.Now.AddDays(5),Explain="    "}

                }

            };

            _lstPlansData.Add(_planData4);

            PlansData _planData5 = new PlansData()

            {

                LstPlan = new List<Plan>()

                {

                    new Plan(){PlanName="   "}

                },

                LstPlanDate = new List<PlanDate>()

                {

                    new PlanDate(){StartDate=DateTime.Now.AddDays(3),EndDate=DateTime.Now.AddDays(5),Explain="    "},

                    new PlanDate(){StartDate=DateTime.Now.AddDays(6),EndDate=DateTime.Now.AddDays(15),Explain="    "},

                    new PlanDate(){StartDate=DateTime.Now.AddDays(7),EndDate=DateTime.Now.AddDays(19),Explain="    "}

                }

            };

            _lstPlansData.Add(_planData5);

            PlansData _planData6 = new PlansData()

            {

                LstPlan = new List<Plan>()

                {

                    new Plan(){PlanName="  1"}

                },

                LstPlanDate = new List<PlanDate>()

                {

                    new PlanDate(){StartDate=DateTime.Now,EndDate=DateTime.Now,Explain="    "},

                    new PlanDate(){StartDate=DateTime.Now.AddDays(6),EndDate=DateTime.Now.AddDays(15),Explain="    "},

                    new PlanDate(){StartDate=DateTime.Now.AddDays(79),EndDate=DateTime.Now.AddDays(79),Explain="    "}

                }

            };

            _lstPlansData.Add(_planData6);
        }
      。             ,      ,              ,       ,   ;
       ,      ,      。
Silverlight        ,     ,     。              ,   3       ,       。

좋은 웹페이지 즐겨찾기