posted by 준치 2008. 10. 25. 20:57

참나...간단한 날짜 변환거 가지고 삽질하다가 찾아서 퍼왔네...
--------------------------------------------------------------------------------
-- Date Add, Adddays, Addmonths
--------------------------------------------------------------------------------
    DateTime dtTomorrow;
    dtTomorrow = DateTime.Today.AddDays(1);
    --------------------------------------------------------------------------------
    DateTime dtTomorrow;
    TimeSpan tsOneDay;
    tsOneDay = new TimeSpan(1, 0, 0, 0);
    dtTomorrow = DateTime.Today.Add(tsOneDay);
   
    AddMonths(1);
    --------------------------------------------------------------------------------
    int intDuration;
    TimeSpan tsDuration;
    tsDuration = new DateTime(2002, 2, 15) - new DateTime(2002, 2, 10);
    intDuration = tsDuration.Days;

--------------------------------------------------------------------------------
-- Date Convert
--------------------------------------------------------------------------------
    DateTime x = DateTime.Now.Date;
    TextBox1.Text = x.ToString();
    string s=TextBox1.Text;
    TextBox2.Text=Convert.ToDateTime(s).ToString("yyyy-MM-dd");
    //for example input date current date value is --- 21-12-2007 00:00:00
    //Converted format output is ----- 2007-12-21
   
    --------------------------------------------------------------------------------
    DateTime date1, date2;
    bool date1OK, date2OK;
    date1 = new DateTime(1,1,1);
    date2 = new DateTime(1,1,1);
    try {
     date1 = Convert.ToDateTime(Date1.Text);
     date1OK=true;
    }
    catch {
     date1OK = false;
    }
   
    --------------------------------------------------------------------------------
    //Date format conversion
    //e.g. 23/05/2007 into 2007-05-23
    String FromDate = Txt_FromDate.Text;
    DateTime DT_FromDate = DateTime.Parse(FromDate);
    FromDate = DT_FromDate.ToString("yyyy-MM-dd");
   
    --------------------------------------------------------------------------------
    DateTime MyDateTime = Convert.ToDateTime("16:25:05");
    lblDateOut.Text = Convert.ToString(MyDateTime);
   
    --------------------------------------------------------------------------------
    time.Text=DateTime.Now.Hour.ToString() + ":" +  DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString();

    --------------------------------------------------------------------------------
    In that case write a simple utility (I have them for integers, decimal etc) that uses regular expressions to validate the date
    Regx.ValidationExpression=@"^(([1-9])|(0[1-9])|(1[0-2]))\/((0[1-9])|([1-31]))\/((\d{2})|(\d{4}))$";
    if it is a match then it is a date and so can perform quickly the day is valid for the month. It will still be a lot quicker than try catch blocks

--------------------------------------------------------------------------------
-- Date Add, Adddays, Addmonths
--------------------------------------------------------------------------------
    DateTime dt = DateTime.Now.Date;
    Response.Write("DateTime.Now.Date = " + dt.ToString() + "<br/>");
    string strDate = "2007/05/01";
    Response.Write("Convert.ToDateTime(\"2007/05/01\") = " + Convert.ToDateTime(strDate).ToString() + "<br/>");
    string strDate1 = "2007.05.01";
    Response.Write("Convert.ToDateTime(\"2007.05.01\") = " + Convert.ToDateTime(strDate1).ToString() + "<br/>");
    string strDate2 = "2007-05-01";
    Response.Write("Convert.ToDateTime(\"2007-05-01\") = " + Convert.ToDateTime(strDate2).ToString() + "<br/>");
    string strDate3 = "2007 05 01";
    Response.Write("Convert.ToDateTime(\"2007 05 01\") = " + Convert.ToDateTime(strDate3).ToString() + "<br/>");
출력 )
    DateTime.Now.Date = 2007-05-22 오전 12:00:00
    Convert.ToDateTime("2007/05/01") = 2007-05-01 오전 12:00:00
    Convert.ToDateTime("2007.05.01") = 2007-05-01 오전 12:00:00
    Convert.ToDateTime("2007-05-01") = 2007-05-01 오전 12:00:00
    Convert.ToDateTime("2007 05 01") = 2007-05-01 오전 12:00:00
결과 )
    [/],[.],[-],[ ]  문자들로 구분을 지어주면 DateTime 형태로 변환이 가능하나
    [,], [%],[\],[_],[^]... 등등의 기호와 일반적으로 Sql 에서 변환이 가능한  숫자 8자리는 변경이 되질 않았다.

posted by 준치 2008. 10. 23. 17:48
구글 검색에서 찾은 중요한 정보
웹서비스 호출해서 값을 가져왔는지 텍스트 박스에 넣어 보려고 callback함수에 값을 넣는 순간
스레드 에러가 나서 찾아보니 이런게 있군여...밑에 비슷한 현상이나 뭐..읽어보면 도움이 됩니다.

WebClient나 HttpWebRequest 함수가 silverlight 2.0 beta1에서 beta2 버전업 되면서 변경된 점이 있습니다.

.NET 에 http://chaoskcuf.com/87 와 비슷한 현상인데요.
Backgound Thread가 UI Thread를 건들면 SecurityException이 발생하는 내용입니다.

WebClient와 HttpWebRequest를 사용하여 비동기 통신을 할 경우
실버라이트 2.0 beta1까지는 Complete 관련 delegate에서
TextBox의 Text를 바꾸는 등의 UI thread에 접근하여도 아무런 제약이 없었습니다.
그러나 beta2 에서는 비동기 메서드에 new TextBox() 처럼 UI와 관련된 작업을 하면
SecurityException이 발생합니다
Exception 내용은 Invalid cross-thread access 입니다.

원인은 beta2 부터는 WebClient, HttpWebRequest delegate가 Background Thread로 반환이 되기 때문입니다.
어찌보면 비동기 콜백이 UI 단을 건드리면서 나타나는 deadlock 발생 가능성을 미연에 방지하기 위함입니다.

이 문제를 해결하기 위해서는 두가지 방법이 있습니다.
SynchronizationContext 라는 새로 추가된 클래스를 사용하시는 방법이 있고,
비동기 메서드 내에서 아래와 같이 Dispatcher.BeginInvoke() 함수를 사용하시는 방법이 있습니다.

void ResponseHandler(IAsyncResult result)
{
    //....... result에 대한 처리
    Dispatcher.BeginInvoke(delegate()
    {
        txtText.Text = "Test";
    });
}

참고로 추가로 변경된 사항을 말씀드리면,
WebClient 의 BassAddress URI가 로컬 경로도 사용할 수 있게끔 변경되었고,
WebClient에 UploadString 관련 함수가 추가되었습니다. 그래서 서버측으로 POST를 날리는 것도 쉬워지겠네요
posted by 준치 2008. 10. 22. 04:00

The SharePoint Web Services

Windows SharePoint Services was being designed and developed during the time when Microsoft was beginning to heavily push Web services. It should be no surprise, then, to find out that you can get at the data in SharePoint through Web services. In fact, there's not just one Web service involved; there are 16. Here's a brief rundown of the Web services that a SharePoint server makes available out of the box:

  • http://server:5966/_vti_adm/Admin.asmx - Administrative methods such as creating and deleting sites
  • http://server/_vti_bin/Alerts.asmx - Methods for working with alerts
  • http://server/_vti_bin/DspSts.asmx - Methods for retrieving schemas and data
  • http://server/_vti_bin/DWS.asmx - Methods for working with Document Workspaces
  • http://server/_vti_bin/Forms.asmx - Methods for working with user interface forms
  • http://server/_vti_bin/Imaging.asmx - Methods for working with picture libraries
  • http://server/_vti_bin/Lists.asmx - Methods for working with lists
  • http://server/_vti_bin/Meetings.asmx - Methods for working with Meeting Workspaces
  • http://server/_vti_bin/Permissions.asmx - Methods for working with SharePoint Services security
  • http://server/_vti_bin/SiteData.asmx - Methods used by Windows SharePoint Portal Server
  • http://server/_vti_bin/Sites.asmx - Contains a single method to retrieve site templates
  • http://server/_vti_bin/UserGroup.asmx - Methods for working with users and groups
  • http://server/_vti_bin/versions.asmx - Methods for working with file versions
  • http://server/_vti_bin/Views.asmx - Methods for working with views of lists
  • http://server/_vti_bin/WebPartPages.asmx - Methods for working with Web Parts
  • http://server/_vti_bin/Webs.asmx - Methods for working with sites and subsites
posted by 알 수 없는 사용자 2008. 10. 21. 15:15

코드에서 아웃룩 메시지 작성 후 Enter구문을 입력하려고 하면...

아웃룩에서는 태그를 문자열로 인식을 해버려 <br>구문을 사용할수 없다.

그래서 <br>구문과 비슷하게 사용하기 위해서는 %0D 이것을 사용하면 된다.

출처 : http://Hyubi.net    
posted by 준치 2008. 10. 21. 11:10
참나...내 머리가 이렇게까지 일줄은 몰랐네..... 함 해보세요...ㅋㅋㅋ

http://www.bitaminb.com/

이건 진짜 사람돌게하네.... 다들 해보세요...ㅎㅎㅎ
나만 그런가..하다가 열받아서 죽는줄 알았네....

http://bbs.pdpop.com/board.php?mode=view&code=G_01_03&no=27757

개구리..
http://bbs.pdpop.com/board.php?mode=view&code=G_01_03&no=27752
posted by 준치 2008. 10. 17. 10:46

간단한 C# 디비연결....ㅎㅎㅎㅎ

ADO.NET
     Contents

Object Model
 
기본  Data Access
C#

- 연결 설정
 
using System.Data;
using System.Data.SqlClient;
 // ...
public void Openning()
{

string ConnectionString = "server=localhost;database=dbTest;uid=sa;pwd=sa";
SqlConnection Connect = new SqlConnection(ConnectionString);
Connect.Open();
Connect.Close();

} 

- Update 
// ExecuteNonQuery
public void Updating()
{

string ConnectionString = "server=localhost;database=dbTest;uid=sa;pwd=sa";
SqlConnection Connect = new SqlConnection(ConnectionString);
string strInsertSQL = "Insert Into tblTest( Id, col2) Values(1,11)";
SqlCommand Command = new SqlCommand(strInsertSQL, Connect);
Connect.Open();
Command.ExecuteNonQuery();
Connect.Close();

}
 

- Query 1 
// ExecuteScalar

public void Quering1()

{

string ConnectionString = "server=localhost;database=dbTest;uid=sa;pwd=sa";
SqlConnection Connect = new SqlConnection(ConnectionString);
string strSelectSQL = "Select count(tblTest.Id) From tblTest";
SqlCommand Command = new SqlCommand(strSelectSQL, Connect);
Connect.Open();
int count = (int)Command.ExecuteScalar();
Connect.Close();
// ...

}

 

- Query 2 
// ExecuteReader // forward-only stream
public void Quering2()
{

string ConnectionString = "server=localhost;database=dbTest;uid=sa;pwd=sa";
SqlConnection Connect = new SqlConnection(ConnectionString);
string strSelectSQL = "Select tblTest.Id, tblTest.col2 From tblTest";
SqlCommand Command = new SqlCommand(strSelectSQL, Connect);
Connect.Open();
SqlDataReader Reader= Command.ExecuteReader();// forward-only stream

while(Reader.Read())
{

string strId = Reader["Id"].ToString();
string strcol2 = Reader["col2"].ToString();
Console.WriteLine("{0}:{1}", strId, strcol2);

}

Connect.Close();

}

- 예외 처리 

- 기타 

DataSet 과 DataAdapter
- 비 연결성 Data 조작 제공

- Query 3 
// SqlDataAdapter  &  DataSet

public void Quering3()

{

 string ConnectionString = "server=localhost;database=dbTest;uid=sa;pwd=sa";
 SqlConnection Connect = new SqlConnection(ConnectionString);
 string strSelectSQL = "Select tblTest.Id, tblTest.col2 From tblTest";
 SqlCommand Command = new SqlCommand(strSelectSQL, Connect);
 DataSet ds = new DataSet();
 SqlDataAdapter aDataAdapter = new SqlDataAdapter(strSelectSQL,Connect);
 Connect.Open();
 aDataAdapter.Fill(ds);
 Connect.Close();

 foreach(DataTable aTable in ds.Tables)
 {
  foreach(DataRow aRow in aTable.Rows)
  {
   string strId = aRow["Id"].ToString().Trim();
   string strcol2 = aRow["col2"].ToString().Trim();
   Console.WriteLine("{0}:{1}", strId, strcol2);
  }
 }
}


 

posted by 준치 2008. 10. 16. 14:53
 

SilverLight 설치

2008년 10월 16일 목요일

오후 1:43

실버라이트 사이트 : http://silverlight.net

 

실버라이트 실행하기 위해 기본적으로 Visual Studio 2008 필요

 - 상황에 따라서는 설치가 필요 수도 있는 같음.
 -
기본은 영문으로 설치

  • Visual Studio 2008 설치가 되어있다면 Visual Studio sp1 설치 되어야 .

 - Microsoft Visual Studio 2008 Service pack 1
 - File Name :
VS90sp1-KB945140-ENU.exe
 - Url :
http://www.microsoft.com/downloads/details.aspx?FamilyID=fbee1648-7106-44a7-9649-6d9f6d58056e&DisplayLang=en
 

posted by 준치 2008. 10. 16. 13:57

오류 코드

설명

ERROR_SUCCESS

0

Action completed successfully.

ERROR_INVALID_DATA

13

데이터가 올바르지 않습니다.

ERROR_INVALID_PARAMETER

87

One of the parameters was invalid.

ERROR_INSTALL_SERVICE_ FAILURE

1601

Windows Installer 서비스를 액세스할 없습니다. Windows Installer 서비스가 제대로 등록되어 있는지 담당자에게 문의하여 확인하십시오.

ERROR_INSTALL_USEREXIT

1602

User cancel installation.

ERROR_INSTALL_FAILURE

1603

설치를 하는 동안 치명적인 오류가 발생했습니다.

ERROR_INSTALL_SUSPEND

1604

설치가 중지되었고, 완료되지 않았습니다.

ERROR_UNKNOWN_PRODUCT

1605

작업은 현재 설치되어 있는 제품에만 실행할 있습니다.

ERROR_UNKNOWN_FEATURE

1606

기능 ID 등록되지 않았습니다.

ERROR_UNKNOWN_COMPONENT

1607

구성 요소 ID 등록되지 않았습니다.

ERROR_UNKNOWN_PROPERTY

1608

없는 속성입니다.

ERROR_INVALID_HANDLE_ STATE

1609

핸들이 잘못된 상태에 있습니다.

ERROR_BAD_CONFIGURATION

1610

제품의 구성 데이터가 손상되었습니다. 고객 지원부에 문의하십시오.

ERROR_INDEX_ABSENT

1611

구성 요소 한정자가 없습니다.

ERROR_INSTALL_SOURCE_ ABSENT

1612

제품에 대한 설치 원본을 사용할 없습니다. 원본이 있는지 또는 액세스할 있는지 확인하십시오.

ERROR_INSTALL_PACKAGE_ VERSION

1613

Windows Installer 서비스에서 설치 패키지를 설치할 없습니다. 새로운 버전의 Windows Installer 서비스를 포함하는 Windows 서비스 팩을 설치하십시오.

ERROR_PRODUCT_ UNINSTALLED

1614

제품의 설치가 취소되었습니다.

ERROR_BAD_QUERY_SYNTAX

1615

SQL 쿼리 구문이 올바르지 않거나 지원되지 않습니다.

ERROR_INVALID_FIELD

1616

레코드 필드가 없습니다.

ERROR_INSTALL_ALREADY_ RUNNING

1618

다른 설치가 이미 진행 중입니다. 이전 설치 작업을 마친 다시 시도하십시오.

ERROR_INSTALL_PACKAGE_ OPEN_FAILED

1619

설치 패키지를 열지 못했습니다. 패키지가 있는지, 액세스할 있는지 확인하거나 올바른 Windows Installer 패키지인지 응용 프로그램 공급업체에 문의하십시오.

ERROR_INSTALL_PACKAGE_ INVALID

1620

설치 패키지를 열지 못했습니다. 응용 프로그램 공급업체에 문의하여 올바른 Windows Installer 패키지인지 확인하십시오.

ERROR_INSTALL_UI_ FAILURE

1621

Windows Installer 서비스 사용자 인터페이스를 시작할 없습니다. 지원 부서에 문의하십시오.

ERROR_INSTALL_LOG_ FAILURE

1622

설치 로그 파일을 없습니다. 지정한 로그 파일의 위치와 기록할 있는지 확인하십시오.

ERROR_INSTALL_LANGUAGE_ UNSUPPORTED

1623

사용자 시스템에서 설치 패키지의 언어가 지원되지 않습니다.

ERROR_INSTALL_TRANSFORM_ FAILURE

1624

변환 내용을 적용할 없습니다. 지정한 변환 경로가 올바른지 확인하십시오.

ERROR_INSTALL_PACKAGE_ REJECTED

1625

설치가 시스템 정책에 의해 숨겨져 있습니다. 시스템 관리자에게 문의하십시오.

ERROR_FUNCTION_NOT_ CALLED

1626

함수를 실행하지 못했습니다.

ERROR_FUNCTION_FAILED

1627

함수가 실행되는 동안 실패했습니다.

ERROR_INVALID_TABLE

1628

지정한 테이블이 잘못되었거나 없습니다.

ERROR_DATATYPE_MISMATCH

1629

잘못된 종류의 데이터가 제공되었습니다.

ERROR_UNSUPPORTED_TYPE

1630

데이터 종류가 지원되지 않습니다.

ERROR_CREATE_FAILED

1631

Windows Installer 서비스를 시작할 없습니다. 지원 부서에 문의하십시오.

ERROR_INSTALL_TEMP_ UNWRITABLE

1632

임시 폴더가 찼거나 액세스할 없습니다. 임시 폴더가 있고 기록할 있는지 확인하십시오.

ERROR_INSTALL_PLATFORM_ UNSUPPORTED

1633

설치 패키지는 플랫폼에서 지원되지 않습니다. 지원되지 않습니다. 응용 프로그램 공급업체에 문의하십시오.

ERROR_INSTALL_NOTUSED

1634

Component not used on this machine.

ERROR_PATCH_PACKAGE_ OPEN_FAILED

1635

패치 패키지를 열지 못했습니다 패치 패키지가 있는지, 액세스할 있는지 확인하거나 올바른 Windows Installer 패치 패키지인지 응용 프로그램 공급업체에 문의하십시오.

ERROR_PATCH_PACKAGE_ INVALID

1636

패치 패키지를 열지 못했습니다. 응용 프로그램 공급업체에 문의하여 올바른 Windows Installer 패치 패키지인지 확인하십시오.

ERROR_PATCH_PACKAGE_ UNSUPPORTED

1637

Windows Installer에서 패치 패키지를 실행할 없습니다. 새로운 버전의 Windows Installer 서비스를 포함한 Windows 서비스 팩을 설치해야 합니다.

ERROR_PRODUCT_VERSION

1638

다른 버전의 제품이 이미 설치되어 있습니다. 버전의 설치를 계속할 없습니다. 제품의 현재 버전을 구성하거나 제거하려면 [제어판] [프로그램 추가/제거] 사용하십시오.

ERROR_INVALID_COMMAND_ LINE

1639

잘못된 명령줄 인수입니다. 자세한 명령줄 도움말은 Windows Installer SDK 살펴보십시오.

ERROR_INSTALL_REMOTE_ DISALLOWED

1640

Installation from a Terminal Server client session not permitted for current user.

ERROR_SUCCESS_REBOOT_ INITIATED

1641

The installer has started a reboot. This error code not available on Windows Installer version 1.0.

ERROR_PATCH_TARGET_ NOT_FOUND

1642

업그레이드할 프로그램이 없거나 업그레이드 패치에서 다른 버전의 프로그램을 업데이트하므로, Windows Installer 서비스에서 업그레이드 패치를 설치할 없습니다. 업그레이드할 프로그램이 사용자 컴퓨터에 있고 올바른 업그레이드 경로인지 확인하십시오. This error code is not available on Windows Installer version 1.0.

ERROR_SUCCESS_REBOOT_ REQUIRED

3010

A restart is required to complete the install. This does not include installs where the ForceReboot action is run. Note that this error will not be available until future version of the installer.


posted by 준치 2008. 10. 15. 15:14

Silverlight 개발환경


드디어 Silverlight 1.0 RC(Release Candidate)과 함께 Visual Studio 2008 Beta2가 발표되었다.

Silverlight application개발을 위해서는 우선 자신의 환경에 맞는 runtime을 아래 4가지중 하나에서 선택하여 설치하여야 한다.

개발을 위해서 설치해야하는 Tool들은 다음과 같다.

기본적인 개발도구로는 VS2008 Beta2와 VS Extensions for Silverlight만 설치하면 되며 SDK를 설치하면 문서나 샘플등이 들어있다.
------------------------------------------------------------------------------------------------------

Silverlight 개발환경

 

1. 통합개발환경(IDE) [Mandatory]

Visual Studio 2008 (.NET3.5를 지원, Visual Studio 2005 .NET3.0까지만 지원)

Visual Studio SP1

2. Silverlight Tools Beta 2 for Visual Studio 2008(Silverlight Plugin) [Mandatory]

Visual Studio에서 Silverlight 항목과 프로젝트 템플릿 생성

3. Silverlight 2 Beta 2 Runtimes[Mandatory]

Silverlight를 실행하기 위하여 설치

 

4. Expression Blend 2.5 June 2008 Preview [Optional]

각종 모션이나 효과를 지원

5. Expression Design [Optional]

각종 도형을 디자인

6. Expression Encoder[Optional]

동영상을 Encoding하기 위하여

 

또는 Microsoft Expression Studio (Total Package) 설치

- Expression Blend, Expression Design, Expression Media, Expression Web

 

7. Deep Zoom Composer[Optional]

Deep Zoom 기능을 위한 Deem Zoom Composer


아~~ 진짜 말이 쉽지 겁나 헤매네.....

posted by 준치 2008. 10. 14. 18:32
 

2주전쯤 Expression Blend(이하 Blend)를 설치하고 나서, 막상 사용하려고 하니 도대체 뭘 어떻게 해야 하는지 참으로 막막했다. 하여, Blend 데모 사이트에서 Tutorial을 몇 개 다운받아서 일일이 타이핑을 해보며 따라 해본 덕에, 겨우 기본적인 것들은 할 수 있게 되었다.

 

몇 가지 알게 된 사실을 공유해보도록 한다.

 
1.     Blend UI


Blend의 UI는 꽤 세련되어 와~~ 라는 감탄사가 나왔다. Blend의 Architect인 John Grossman의 블로그를 살펴보니, 이거 만드는 데 4년 걸렸다고 한다.

Blend의 메인 UI 는 Design workspace (디폴트. Window/Design Workspace(F6)메뉴) 와 Animation workspace(Window/Animation Workspace(F7)) 로 구분되며 Animation workspace일 때는 UI가 다음처럼 바뀐다.



2. Toolbox

 Blend toolbox는

선택, 줌, 패닝 등 편집에 필요한 버튼과,
3D 제작에 필요한 카메라 설정 버튼,
Path 제작에 사용되는 Paint Bucket, Pen 버튼,
Brush 트랜스폼에 사용되는 버튼, 그리고
실제적으로 WPF 객체를 유형에 따라 Rectangle, Ellipse, Line등 Shape 버튼,
Grid등 Layout 객체 버튼,
Label, TextBox 등 텍스트 관련 버튼,
Button, Slider, Tab등 기본 FramworkElement 객체,
그리고, Custom Control등을 불러다 쓸 수 있게 한 Asset 버튼으로 구성된다.

* 각 버튼을 왼쪽 마우스로 선택하면 되고
  선택한 버튼에서 오른쪽 마우스를 누르면 그 버튼과 관련된 다른 기능들이 팝업으로 나타난다.

**  Blend에서는 더블 클릭이 매우 중요한 역할을 한다. Shape등 객체 버튼을 더블 클릭하면 Default 속성을 가진 객체가 작업 영역인 Art board 에 그려진다.

















3. Object and Timeline

Toolbox에서 Rectangle 객체를 더블클릭하여 삽입한 뒤의 Object & Timeline 박스의 내용이다.

LayoutRoot 는 default로 Grid 객체다. - Tool/Options 메뉴에서 Artboard를 선택하여 Use Grid layout 부분을 uncheck하면 default LayoutRoot 가 Canvas 객체로 바뀐다.

각 항목을 선택하면 Artboard에서 해당 객체가 선택된다.

* 여기서 노란색 테두리의 의미가 매우 중요하다. 노란색 테두리는 Layout객체에서만 나타나는데, 의미는, 새롭게 삽입되는 객체의 Parent를 지정하는 역할을 한다.

예를 들어 Border등 새로운 Layout객체를 삽입하면 Window는 두개의 Layout객체가 있게 되는 데, 이 후 그냥 Rectangle을 삽입하면 rectangle의 parent는 LayoutRoot다. 하지만, Border를 더블 클릭한 뒤 삽입하면 Rectangle은 Border의 Child가 된다.

** Timeline은 Trigger(혹은 Event)가 객체에 지정되면 나음처럼 나타난다.



4. Property 박스


프로퍼티 박스는 기본적으로 Brushes/Appearance/Layout/Common Properties/Transform/Miscellaneous로 카테고리화 되어 있는데, MediaElement등 특정 개체에만 있는 속성이 있는 경우, 이와 관련된 탭이 나타난다.

* 빨간색 동그라미를 친 부분처럼 각 프로퍼티 옆에는 작은 정사각형이 있는데 이것은 아래처럼 Advanced menu를 나타나게 하는 것으로 주로 Data Binding을 지정할 때 많이 사용한다.


** Blend의 재미있는 기능 중 하나는 Search 부분이다. 프로퍼티 박스에서 Search 부분은 특정 단어를 그림처럼 타이핑하면 자동으로 해당 프로퍼티가 나타난다.


5. Interaction 박스

Interaction 박스에서 MouseEnter, MouseLeave 처럼 각 객체에는 Event(혹은 Trigger)를 지정할 수 있는데, 이 과정은 2단계로 진행된다.

Step 1.  Event(혹은 Trigger) 생성 단계 - 아래 그림처럼 +Event 를 누르면 default로 Window.Loaded 가 나타난다. 이것은 그 아래 표시된 것처럼 When 이하 항목을 조정하면 내용을 바꿀 수 있다.



예로 When Window 대신 [Button]을 선택하고 Loaded 대신 MouseEnter를 선택한 뒤, is raised 옆의 + 버튼을 누르면 화면은 아래 그림처럼 바뀐다.

Blend의 Event는 기본적으로 2D Animation의 StoryBoard에 의지한다. + 버튼을 누르면 대부분 다음과 같은


메시지 박스가 나타난다. 보통은 OK를 누른다.

Step 2. Event Animation 생성 단계 - Object and Timeline 박스에서 Timeline 부분이 나타나면 Timeline 부분의 노란색 선을 사용해서 시간 간격(Duration)과 Animation을 하고자 하는 프로퍼티 값을 지정할 수 있다. - Timeline이 나타날 때는 Artboard에 붉은 색으로 "Timeline recording is on" 이란 부분이 나타나는 데, 이 글귀의 의미는 우측 프로퍼티 창에서 변경하는 속성은 Animation용으로 변경되는 것이지l, 일반 편집때 변경하는 속성이 아니라는 의미이다.

위 그림은 MouseEnter 이벤트가 발생한뒤 0.5초 까지 Button의 Background Brush를 붉은 색으로 바꾸도록 지정한 것이다.
물론 Rotation 등 다른 속성들도 추가로 지정할 수 있다. - 이처럼 여러개의 속성 변경을 할 수 있기 때문에 Record 한다는 메시지가 나오는 것임.

지정한 Animation의 동작을 보려면 Timeline 창의 윗쪽에 위치한 Animation Play관련 버튼을 누르거나, 노란색 Time snap 라인을 좌우로 이동해 보면 된다.

이 recording 모드에서 빠져 나오려면 아래 그림처럼  맨 상단의 Combo 박스를 열어 Default를 선택하거나, (화면이 가려져서 안보이지만) Window 좌측 옆의 위화살표를 누르거나 하면 된다.



이상은 아주 기본적인 사용법을 열거한 것이다. Blend의  메뉴들에는 Style, Data Binding, Control template 생성, Resource 등 WPF와 관련된 많은 기능들이 들어 있다.

퍼왔습니다...앤드류님 쌩유입니다....