WPFInvestigation.zip






 Main창에서 변경Page와 회원리스트 Page를 가지고 있다가입창 에서는 메인화면,기본 가입추가 정보 입력 Page를 가지고 있다.












가입창.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;

        }

    }



+ Recent posts