가입창.cs |
자식 Page로 가지고 있는 3개의 Page에서 페이지 변경과 취소 버튼 수행시 부모창에서 변화를 가능하게 하기 위해 자식 Page에 선언된 delegate를 처리해 주었다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes;
namespace WPFInvestigation { /// <summary> /// ResForm.xaml에 대한 상호 작용 논리 /// </summary> /// public partial class ResForm : Window { FirstInfoPage firstinfopage = new FirstInfoPage(); BasicInfoPage basicInfoPage = new BasicInfoPage(); MoreInfoPage moreinfopage = new MoreInfoPage(); public ResForm() { basicInfoPage.DistroyFormDeleEventHandler += newDistroyFormDele(basicInfoPage_DistroyFormDeleEventHandler); basicInfoPage.ChangePageMoreInfoDeleEventHandler += newChangePageMoreInfoDele(basicInfoPage_ChangePageMoreInfoDeleEventHandler);
firstinfopage.FromDistroyDeleEventHandler += newFromDistroyDele(basicInfoPage_DistroyFormDeleEventHandler); firstinfopage.ChangePageBasciInfoDeleEventHandler += newChangePageBasciInfoDele(firstinfopage_ChangePageBasciInfoDeleEventHandler);
moreinfopage.FromDistroyDeleEventHandler += newFromDistroyDele2(basicInfoPage_DistroyFormDeleEventHandler); moreinfopage.ChangeBasicInfoDeleEventHandler += newChangeBasicInfoDele(firstinfopage_ChangePageBasciInfoDeleEventHandler);
InitializeComponent(); resframe.Navigate(firstinfopage); } void basicInfoPage_DistroyFormDeleEventHandler() { this.Close(); }
void basicInfoPage_ChangePageMoreInfoDeleEventHandler() { resframe.Navigate(moreinfopage); moreinfopage.SetMember(basicInfoPage.textBoxid.Text, basicInfoPage.textBoxname.Text, int.Parse(basicInfoPage.textBoxage.Text)); }
void firstinfopage_ChangePageBasciInfoDeleEventHandler() { resframe.Navigate(basicInfoPage); } } }
|
초기 가입 Page에서 2개의 델리게이트를 선언 하였다.
ChangePageBasicInfoDele Page로 이동하기 위한 Delegate로 선언 되어 있고 FromDistroyDele은 취소 버튼에 이벤트가 발생될 때 부모 창을 종료해야 하기 때문에 선언 되어 있다.
public delegate void ChangePageBasciInfoDele(); public delegate void FromDistroyDele(); public partial class FirstInfoPage : Page { public event ChangePageBasciInfoDele ChangePageBasciInfoDeleEventHandler = null; public event FromDistroyDele FromDistroyDeleEventHandler = null; public FirstInfoPage() { InitializeComponent(); } |
기본 가입 Page도 초기 가입Page와 마찬가지로 사용하기 위해 선언되었다.
public delegate void ChangePageMoreInfoDele(); public delegate void DistroyFormDele();
public partial class BasicInfoPage : Page { MemberList memlist = MemberList.GetInstance(); public event ChangePageMoreInfoDele ChangePageMoreInfoDeleEventHandler = null; public event DistroyFormDele DistroyFormDeleEventHandler = null; } |
추가 정보 Page에 파일을 읽기 위해 OpenFileDialog 클래스를 사용하였다.
private void buttonUpLoad_Click(object sender, RoutedEventArgs e) { openfile.Filter = "사진File(*.bmp,*.jpg)|*.bmp;*.jpg";
openfile.AddExtension = true; if (openfile.ShowDialog() == true) { bmp = new BitmapImage(new Uri(openfile.FileName)); image1.Source = bmp; } } |
Main창 회원리스트 Page
ListView를 선언해주고 그안에 ListView의 View가 존재하는데 이 View내에서 사용하기 위한 GridView를 생성 한다. 그리고 내가 원하는 만큼의 GridViewColumn을 생성한다. 각 칼럼들은 고유한 Binding을 갖는다. 보여지는 ListView의 GridviewColumn의 Header에 정해진이름이 보여진다.
<Page x:Class="WPFInvestigation.MemberListPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MemberListPage"> <Grid> <ListView Name="MemberListView" Margin="12"> <ListView.View> <GridView> <GridViewColumn DisplayMemberBinding="{Binding Path = Name}" Width="80" >이름</GridViewColumn> <GridViewColumn DisplayMemberBinding="{Binding Path = Id}" Width="80" >아이디</GridViewColumn> <GridViewColumn DisplayMemberBinding="{Binding Path = Age}" Width="80" >나이</GridViewColumn> </GridView> </ListView.View> </ListView> </Grid> </Page>
|
Member Class
ListView에 아이템을 추가 해주기 위해서 현재 존재하는 칼럼의 Binding Path와 같은 이름을 가지는 속성들을 생성한다.
public class Member { public Member(string _id, string _name, int age) { Name = _name; Id = _id; Age = age; } public Member(string _id, string _name, int age, BitmapImage bimage) { Name = _name; Id = _id; Age = age; MyImage = bimage; } public string Name { get; set; } public string Id { get; set; } public int Age { get; set; } public BitmapImage MyImage { get; set; } } |