Silverlight - 시공 계획 일 보고서 (2)
21757 단어 silverlight
최근 에 줄곧 잔업 을 하고 있어 서 기본적으로 개인 시간 이 없다.그래서 업데이트 가 즉각 적 이지 않 습 니 다.
긴 말 하지 말고 인터페이스 코드 부터 시작 합 시다.인터페이스 코드 는 매우 간단 합 니 다. 다음 과 같 습 니 다.
<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 , 。
。
。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Silverlight animation performanceAnimation performance can be improved with several configurations: Desired Frame Rate Configure in the WEB project: Hard...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.