none
Silverlight에서 Binding 값 변경 RRS feed

  • 질문

  • Silverlight에서 Binding Property Type이외 에 다른 타입으로 사용할 수 있는 방법을 알려주세요
    2011년 11월 16일 수요일 오전 8:16

답변

  • 안녕하십니까? 김도남 님

    Microsoft TechNet Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 “Silverlight에서 Binding  값 변경에 대한 답변을 드리겠습니다.

     

     

    Step 1 : Binding 구현

     

    아래와 같이 INotifyPropertyChanged를 구현해서 View객체와 Binding을 합니다.

     

    MainPageViewModel.cs

     

    public string Name

    {

        get { return _name; }

        set

        {

            if (_name != value)

            {

                _name = value;

                RaisePropertyChanged("Name");

            }

        }

    }

     

     

    아래에서 Binding시 이용하기 위해 Resource LevelConveter Class 인스턴스를 생성을 합니다.

    <UserControl.Resources>

        <converter:LevelConverter x:Key="LevelConverter" />

    </UserControl.Resources>

     

    <StackPanel Grid.Column="1"

                Orientation="Vertical">

        <TextBlock Text="{Binding Path=Name}" />

        <TextBlock Text="{Binding Path=Age}" />

        <TextBlock Text="{Binding Path=Description}" />

        <!--Converter 속성을 이용해서 IValueConverter Interface 구현한 Class 이용해서 변수 타입을 변경  Binding 합니다.-->

        <TextBlock Text="{Binding Path=Level, Converter={StaticResource LevelConverter}}" />

    </StackPanel>

     

     

    Step 2 : IValueConvert 구현

     

    IValueConverter Interface Convert함수를 이용해서 ViewModel -> View 로 가는 정보를 가공할 수 있습니다.

     

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

    {

        try

        {

     

            //Value ViewModel 객체의 값입니다. return 키워드를 이용해서 View객체에 변환된 값을 전달할  있습니다.

            if (value is Int32)

            {

                int level = (int)value;

     

                if (level == 1)

                {

                    return "낮음";

                }

                else if (level == 2)

                {

                    return "보통";

                }

                else if (level == 3)

                {

                    return "높음";

                }

                else

                {

                    return null;

                }                    

            }

            else

            {

                return null;

            }                

        }

        catch (Exception e)

        {

            Debug.WriteLine(e.ToString());

            return null;

        }

    }

     

     

    Proejct Explorer

     

     

     

     

    참고 자료

     

    IValueConverter 인터페이스

    http://msdn.microsoft.com/ko-kr/library/system.windows.data.ivalueconverter.aspx

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 김도남 2011년 11월 18일 금요일 오전 7:14
    2011년 11월 16일 수요일 오전 9:04
    중재자