티스토리 뷰

안녕하세요! 반짝반짝 빛나는 성남미입니다 :-)

조금은 어렵지만,

윈도우 사이트를 새창으로 띄우거나, 버튼을 눌렀을 때 원하는 xaml 파일을 불러오는 방법을 소개합니다.

 

 

화면이 나타날 영역을 보더로 잡아주고 frame으로 이름을 넣어줍니다.

그리고 btn_1, btn_2, btn_3버튼 3개와 Rbtn_1, Rbtn_2, Rbtn_3 라디오 버튼3개를 준비합니다.

 

 

<xaml 추가하기>

오른쪽 마우스 클릭 > Add New Item 클릭,

 

 

유저컨트롤을 추가해 줍니다.

이름을 각각 Test_1.xaml, Test_2.xaml, Test_3.xaml으로 생성합니다.

 

 

알아보기 쉽게 각각의 xaml 색깔을 넣어주고, 이름을 넣어 구별하기 쉽게 했습니다.

 

 

btn_1 레이어를 잡고 오른쪽 Properties 탭을 클릭한 오른쪽 번개모양의 아이콘을 클릭합니다.

버튼의 이벤트를 걸어주기 위해 Click 오른쪽 네모를 더블 클릭합니다.


using System;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Ink;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

 

namespace Btn_xaml_go

{

    public partial class MainPage : UserControl

    {

        public MainPage()

        {

            // Required to initialize variables

            InitializeComponent();

        }

 

        

        private void btn_1_Click(object sender, System.Windows.RoutedEventArgs e)

        {

            // TODO: Add event handler implementation here.

        }

        

    }

}

다음과 같이 코드가 활성화 됩니다.

바로 여기서 원하는 이벤트를 걸어주게 됩니다!

 

 

<버튼 클릭 윈도우 브라우저를 띄우는 방법>

using System;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Ink;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

 

using System.Windows.Browser;//추가

 

상단에 using System.Windows.Browser; 추가해 줍니다.

 

private void btn_1_Click(object sender, System.Windows.RoutedEventArgs e)

{

// TODO: Add event handler implementation here.

}

이렇게 되어 있는 부분을

private void btn_1_Click(object sender, System.Windows.RoutedEventArgs e)

{

HtmlPage.PopupWindow(new Uri("http://bling79.tistory.com/"), null, null); // 윈도우 새창

}

이렇게 코드를 바꾸면

btn_1 눌렀을 "http://bling79.tistory.com/"사이트로 새창이 뜹니다.

 

 

익스프레션 스튜디오 카페의 CSharp님께서 알려주신 방법을 추가할께요!

PopupWindow 메소드를 사용해도 되지만, Navigate 메소드를 사용해도 됩니다.


private void btn_1_Click(object sender, System.Windows.RoutedEventArgs e)

{

HtmlPage.Window.Navigate(new Uri("http://bling79.tistory.com/", UriKind.RelativeOrAbsolute), "_blank");

}

 


, Navigate 메소드를 사용할때는 mainpage가 아닌 디폴트.htmlstartup을 걸어줘야 뜹니다.

(이 부분에 대해서는 좀 더 연구를 해보고, 내용을 추가하도록 하겠습니다 ^^ )




<버튼 클릭 xaml 불러오는 방법>

private void btn_2_Click(object sender, System.Windows.RoutedEventArgs e)

{

// TODO: Add event handler implementation here.

}

 

private Test_1 go1 = new Test_1(); // 재물의 이름을 지정해주고 여기에 재물이 생성(new)되라

        

private void btn_2_Click(object sender, System.Windows.RoutedEventArgs e)

{

frame.Child = go1; // btn_2 누르면 go1 떠라!! (= 위에서 선언해준 Test_1xaml 떠라)

}

상단에 Test_1.xaml 이름을 go1 지정해 주고,

btn_2 누르면 go1(Test_1.xaml) frame 자식으로 뜨도록 설정해 주었습니다.

 

 

private void btn_2_Click(object sender, System.Windows.RoutedEventArgs e)

{

frame.Children.Add(go1);

}

* 여기서 잠깐! 자식객체를 하나만 갖는 보더 대신

자식객체를 여러 개를 갖는 경우는, 이렇게 넣어주면 되겠습니다.

 

 

<라이오 버튼으로 xaml 불러오기>

라디오버튼은 Click 아닌 Checked 더블 클릭해 넣어주면 됩니다.

using System;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Ink;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

using System.Windows.Browser;

 

namespace Btn_xaml_go

{

    public partial class MainPage : UserControl

    {

        public MainPage()

        {

            // Required to initialize variables

            InitializeComponent();

        }

 

        private Test_1 go1 = new Test_1(); // 재물의 이름을 지정해주고 여기에 재물이 생성(new)되라

        private Test_2 go2 = new Test_2();

        private Test_3 go3 = new Test_3();

 

 

 

        private void Rbtn_1_Checked(object sender, System.Windows.RoutedEventArgs e)

        {

             frame.Child = go1; //라디오 버튼 1

        }

        

        private void Rbtn_2_Checked(object sender, System.Windows.RoutedEventArgs e)

        {

             frame.Child = go2;//라디오 버튼 2

        }

        

        private void Rbtn_3_Checked(object sender, System.Windows.RoutedEventArgs e)

        {

             frame.Child = go3;//라디오 버튼 3

        }

    }

}

 

라디오 버튼을 각각 같은 방법으로 넣어주게 되면 체크했을 frame 안에 xaml 불러오게 됩니다.

 

 조금은 어렵지만 알면 유용합니다! J

 

 <결과물>

Microsoft Silverlight 가져오기

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday