첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

TestProject.zip
다운로드

▶ Place.cs

namespace TestProject
{
    /// <summary>
    /// 장소
    /// </summary>
    public class Place
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// 도시명
        /// </summary>
        private string cityName;

        /// <summary>
        /// 주
        /// </summary>
        private string state;

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 도시명 - CityName

        /// <summary>
        /// 도시명
        /// </summary>
        public string CityName
        {
            get
            {
                return this.cityName;
            }
            set
            {
                this.cityName = value;
            }
        }

        #endregion
        #region 주 - State

        /// <summary>
        /// 주
        /// </summary>
        public string State
        {
            get
            {
                return this.state;
            }
            set
            {
                this.state = value;
            }
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - Place()

        /// <summary>
        /// 생성자
        /// </summary>
        public Place()
        {
            this.cityName = string.Empty;
            this.state    = string.Empty;
        }

        #endregion
        #region 생성자 - Place(cityName, state)

        /// <summary>
        /// 생성자
        /// </summary>
        /// <param name="cityName">도시명</param>
        /// <param name="state">주</param>
        public Place(string cityName, string state)
        {
            this.cityName = cityName;
            this.state    = state;
        }

        #endregion
    }
}

 

▶ PlaceCollection.cs

using System.Collections.ObjectModel;

namespace TestProject
{
    /// <summary>
    /// 장소 컬렉션
    /// </summary>
    public class PlaceCollection : ObservableCollection<Place>
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - PlaceCollection()

        /// <summary>
        /// 생성자
        /// </summary>
        public PlaceCollection()
        {
            Add(new Place("Seattle"      , "WA"));
            Add(new Place("Redmond"      , "WA"));
            Add(new Place("Bellevue"     , "WA"));
            Add(new Place("Kirkland"     , "WA"));
            Add(new Place("Portland"     , "OR"));
            Add(new Place("San Francisco", "CA"));
            Add(new Place("Los Angeles"  , "CA"));
            Add(new Place("San Diego"    , "CA"));
            Add(new Place("San Jose"     , "CA"));
            Add(new Place("Santa Ana"    , "CA"));
            Add(new Place("Bellingham"   , "WA"));
            Add(new Place("Tacoma"       , "WA"));
            Add(new Place("Albany"       , "OR"));
        }

        #endregion
    }
}

 

▶ MainWindow.xaml

<Window x:Class="TestProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
    xmlns:data="clr-namespace:System.Windows.Data;assembly=PresentationFramework" 
    xmlns:local="clr-namespace:TestProject"
    Width="800"
    Height="600"
    Title="CollectionViewSource 엘리먼트 : Source 속성 사용하기"
    FontFamily="나눔고딕코딩"
    FontSize="16">
    <Window.Resources>
        <local:PlaceCollection x:Key="PlaceCollectionKey" />
        <CollectionViewSource x:Key="PlaceCollectionViewSourceKey"
            Source="{StaticResource PlaceCollectionKey}">
            <CollectionViewSource.SortDescriptions>
                <scm:SortDescription PropertyName="CityName" />
            </CollectionViewSource.SortDescriptions>
            <CollectionViewSource.GroupDescriptions>
                <data:PropertyGroupDescription PropertyName="State" />
            </CollectionViewSource.GroupDescriptions>
        </CollectionViewSource>
        <XmlDataProvider x:Key="XmlDataProviderKey" XPath="Tasks/Task">
            <x:XData>
                <Tasks xmlns="">
                    <Task Name="Groceries"
                        Priority="2"
                        Type="Home">
                        <Description>Pick up Groceries and Detergent</Description>
                    </Task>
                    <Task Name="Laundry"
                        Priority="2"
                        Type="Home">
                        <Description>Do Laundry</Description>
                    </Task>
                    <Task Name="Email"
                        Priority="1"
                        Type="Work">
                        <Description>Email Clients</Description>
                    </Task>
                    <Task Name="Clean"
                        Priority="3"
                        Type="Work">
                        <Description>Clean my office</Description>
                    </Task>
                    <Task Name="Dinner"
                        Priority="1"
                        Type="Home">
                        <Description>Get ready for family reunion</Description>
                    </Task>
                    <Task Name="Proposals"
                        Priority="2"
                        Type="Work">
                        <Description>Review new budget proposals</Description>
                    </Task>
                </Tasks>
            </x:XData>
        </XmlDataProvider>
        <CollectionViewSource x:Key="TaskCollectionViewSourceKey"
            Source="{StaticResource XmlDataProviderKey}">
            <CollectionViewSource.SortDescriptions>
                <scm:SortDescription PropertyName="@Priority" />
            </CollectionViewSource.SortDescriptions>
            <CollectionViewSource.GroupDescriptions>
                <data:PropertyGroupDescription PropertyName="@Priority" />
            </CollectionViewSource.GroupDescriptions>
        </CollectionViewSource>
    </Window.Resources>
    <Grid Margin="10">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"  />
            <ColumnDefinition Width="10" />
            <ColumnDefinition Width="*"  />
        </Grid.ColumnDefinitions>
        <ListBox Grid.Column="0"
            DisplayMemberPath="CityName"
            ItemsSource="{Binding Source={StaticResource PlaceCollectionViewSourceKey}}">
            <ListBox.GroupStyle>
                <x:Static Member="GroupStyle.Default" />
            </ListBox.GroupStyle>
        </ListBox>
        <ListBox Grid.Column="2"
            ItemsSource="{Binding Source={StaticResource TaskCollectionViewSourceKey}}" />
    </Grid>
</Window>
728x90
반응형
그리드형
Posted by 사용자 icodebroker
TAG , ,

댓글을 달아 주세요