2010-06-28 2 views
0

Expression Design에서 작성한 XAML 클래스에 .CS 기능을 어떻게 추가합니까?Silverlight APP 용 Expression Design에 구축 된 XAML 클래스에 .CS 기능을 추가하려면 어떻게해야합니까?

저는 디자이너에게 아직 익숙하지 않은 실버 라이트 프로젝트를 가지고 있습니다. 내가 알아 차린 첫 번째 것 중 하나는 "LayoutRoot"의 자식으로 보이는 파일과 일치하는 .cs 파일이없는 것입니다. 즉, Expression Blend에 표시되는 것처럼이 노드는 "개체 및 타임 라인 탭"의 "LayoutRoot"아래에있는 자식 노드입니다.

Visual Studio 8에서 볼 때 이들은 Page.xaml 클래스의 자식 노드 인 것으로 나타납니다. 첫 번째 단계는 .cs 파일이나 클래스를 생성하여 이러한 그리드의 기능을 처리하는 것이 아닙니다. 첫 번째 자식 그리드의 이름을 검색했는데 기존 .cs 파일에서 결과를 얻지 못했습니다. .cs 파일은 어떻게 생성합니까?

답변

0

그리드는 일반적으로 전체 페이지의 컨테이너 컨트롤로 사용됩니다. 일반적으로 직접 거래하지 않습니다. 그리드에 컨트롤이있는 경우 해당 컨트롤을 처리합니다. 그들에게 이름을 부여하십시오 (예 : .. x : Name = "someName"). 그런 다음 해당 컨트롤에 대한 이벤트를 처리하십시오. 컨트롤과 이벤트 처리와 관련하여 WinForms와 거의 같습니다.

예를 들어, 여기에 WPF 프로젝트 (내가 실버 라이트하지만 기본적으로 동일하지 알고있다) 나는 캔버스와 그리드 "내부"버튼을 가지고

<Grid x:Name="LayoutRoot"> 
    <Canvas 
      x:Name="canvas1" 
      Height="100" 
      HorizontalAlignment="Left" 
      Margin="116,62,0,0" 
      VerticalAlignment="Top" 
      Width="200"> 

     </Canvas> 

     <Button 
      x:Name="btnGetChildren" 
      Content="Get Children" 
      Height="23" 
      Margin="174,209,218,47" 
      Width="75" 
      Click="btnGetChildren_Click" /> 
    </Grid> 

공지 사항에서 일부 XAML입니다. 단추에는 처리중인 Click 이벤트가 있음을 알 수 있습니다. 해당 클릭 이벤트의 코드는 해당 페이지의 "xaml.cs"파일에 있습니다. 페이지의 구성 요소는 .cs 파일 뒤에 코드에서 표시되지 않는 경우에도 클래스의 속성 그래서

private void btnGetChildren_Click(object sender, RoutedEventArgs e) 
{ 
    foreach (UIElement element in canvas1.Children) 
    { 
     // some code 
    } 
} 
0

XAML과 xaml.cs 파일은 부분 클래스입니다. 이 동작을 보려면 메서드를 만들고 메서드 본문에서 개체의 이름을 입력하면 intellisense에 나타납니다.

또 다른 방법은 디자인 표면에서 처리하는 것입니다. 속성 창에서 "이벤트"로 전환하십시오. 조치를 취할 이벤트를 찾고 제공된 필드에 메소드 이름을 입력하십시오. "Enter"를 누르면 VS가 이벤트에 메서드를 연결하고 방금 만든 처리기 메서드로 바로 이동합니다.

관련 문제