티스토리 뷰
안녕하세요! 반짝반짝 빛나는 성남미입니다 :-)
조금은 어렵지만,
윈도우 사이트를 새창으로 띄우거나, 버튼을 눌렀을 때 원하는 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가 아닌 디폴트.html에 startup을 걸어줘야 뜹니다.
(이 부분에 대해서는 좀 더 연구를 해보고, 내용을 추가하도록 하겠습니다 ^^ )
<버튼 클릭 시 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
<결과물>
'공부 > expression blend' 카테고리의 다른 글
Setter Property 세터프로퍼티 (0) | 2010.10.15 |
---|---|
같은 각도로 잡아줄 때 쓸때 걸어주는 바인딩 (0) | 2010.10.15 |
문제해결! 한글폰트가 올라가 보여요! (0) | 2010.08.18 |
Expression Blend 이미지 Strech 설정하기 (0) | 2010.08.16 |
WPF 상단의 타이틀과 버튼 없애는 방법 (0) | 2010.08.13 |
- Total
- Today
- Yesterday