ABOUT ME

-

  • [WPF] ListView에 데이터를 바인딩 해보자!
    Programming/C# 2019. 3. 7. 23:00

    안녕하세요. 간단하게 따라 할 수 있는 예제를 만드는 Teemol입니다!


    오늘의 예제는 WPF ListView에 쉽게 데이터를 입력할 수 있는 바인딩에 대해 알려드리려고 합니다!


    여기서 바인딩이란,

    간단하게 설명하면 UI 요소와 데이터를 이어준다고 생각하시면 편할 것 같습니다.


    바로 사용법을 알려드리겠습니다!


    먼저 리스트 뷰에 들어갈 데이터의 클래스를 만들어줍니다!


    .cs

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class MyData
    {
        public string dataA{ get; set; }
        public int dataB { get; set; }
        public DateTime dataC { get; set; }
     
        private static List<MyData> instance;
     
        public static List<MyData> GetInstance()
        {
            if (instance == null)
                instance = new List<MyData>();
     
            return instance;
        }
    }
    cs


    해당 클래스에서 바인딩에 사용될 데이터는 꼭 get, set을 만들어 줘야 합니다!


    위 클래스의 instance는 이번 설명에서 리스트 뷰에 들어갈 데이터를 저장하는 객체입니다.

    사용 시 클래스에는 바인딩 될 데이터를 저장할 변수만 만드시면 됩니다!


    이제 데이터를 바인딩 할 리스트 뷰를 만듭니다.


    .xaml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <ListView Name="myListView">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="StringData" Width="150" DisplayMemberBinding="{Binding dataA}"/>
                <GridViewColumn Header="IntData" Width="150" DisplayMemberBinding="{Binding dataB}"/>
                <GridViewColumn Header="TimeData" Width="200" DisplayMemberBinding="{Binding dataC}"/>
            </GridView>
        </ListView.View>
    </ListView>
    cs


    마지막으로 입력될 테이터를 추가하고 리스트 뷰에 넣어보겠습니다!


    .cs

    1
    2
    3
    4
    5
    MyData.GetInstance().Add(new MyData() { dataA = "스트링 1", dataB = 1, dataC = DateTime.Today });
    MyData.GetInstance().Add(new MyData() { dataA = "스트링 2", dataB = 2, dataC = DateTime.Today });
    MyData.GetInstance().Add(new MyData() { dataA = "스트링 3", dataB = 3, dataC = DateTime.Today });
            
    myListView.ItemsSource = MyData.GetInstance();
    cs


    위와 같이 ItemsSource에 List<MyData>를 넣어주면 리스트 뷰에 데이터가 들어간 걸 확인할 수 있습니다!



    이렇게 리스트에 있는 여러 개의 데이터를 한 번에 넣는 것이 가능합니다!


    그리고 또 하나의 장점으로,

    MyData.GetInstance()의 값이 변경되면 리스트 뷰의 내용도 같이 변경됩니다.


    확인을 위해 버튼을 하나 만들어 보겠습니다!



    버튼을 클릭하면 MyData.GetInstance() 2번째의 값을 변경하도록 하고,

    리스트 뷰를 갱신해주는 코드를 넣어보도록 하겠습니다!


    .cs

    1
    2
    3
    4
    5
    6
    7
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MyData md = MyData.GetInstance().ElementAt(1);
        md.dataA = "버튼클릭!";
        md.dataB = 0;
        myListView.Items.Refresh();
    }
    cs


    버튼을 클릭하면 리스트 뷰의 내용이 변경된 것을 확인할 수 있습니다.



    지금까지 WPF 리스트 뷰에 데이터 바인딩 하는 방법이었습니다!


    읽어주셔서 감사합니다.

    'Programming > C#' 카테고리의 다른 글

    [WPF] WindowChrome !  (0) 2020.03.20
    [WPF] ListView에 UserControl 넣기  (0) 2020.03.20
    Json.NET을 사용해보자!  (0) 2019.04.07
    [WPF] 의존 프로퍼티!?  (0) 2019.03.08
    데이터처리를 쿼리로!? (1)  (0) 2019.03.05

    댓글

Designed by Tistory.