출력하는 내용을 바인딩해서 사용하고 싶은데,
출력된 내용이 너무 길어서 화면을 벗어나거나, 이상하게 Text가 Warp될 때, 사용하면 좋지 않을까? 하고
기록을 남겨두기 위해 작성합니다.

바인딩 된 프로퍼티의 Set에서 내용을 변경하기도 뭐하고,, 그렇다고 이걸위해 따로 프로퍼티를 추가하기도 그렇고...
그게 아니라, 특정 엘리먼트의 내용을 바로 바인딩 할 경우에는 이도저도 잘못하겠고,,
혹은 UI출력과는 무관하게 작성하고 싶을 때,
StringFormat과 Conveter의 조합을 사용하면 어떨까?? 하는 의견입니다. 

(그러고보니 StringFormat은 말줄임과는 별로 상관이 없네요.... 그냥 바인딩된 내용에 여러가지를 추가하고싶을때?!)


내용은 어렵지 않고 간단합니다.

 xaml 코드
 <ComboBox x:Name="cbbxNames" ItemsSource="{Binding Names}" />
            <TextBlock x:Name="TxtBlFullSentence"
                       Text="{Binding Path = SelectedItem, ElementName = cbbxNames,
                       StringFormat=선택된 내용 : \{0\} 맞습니까??, 
                       Converter={x:Static local:StringLengthConveter.Instance}}"
                       />

 Converter 코드

  public class StringLengthConveter : IValueConverter
    {
        public static StringLengthConveter Instance = new StringLengthConveter();
        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null) return "";

            string ReturnString = (string)value;

            if (ReturnString.Length > 10)
            {
                ReturnString = string.Format("{0}...",ReturnString.Substring(0, 10));
            }

            return ReturnString;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }




TextBlock에서는 위의 ComboBox의 SelectedItem을 곧바로 바인딩 하여 사용하였기 때문에,
따로 프로퍼티를 추가해서 TextBlock에 사용하기 번거롭습니다.
하지만 다음과 같이 사용하면 따로 프로퍼티를 추가할 필요 없이 바로 바인딩하여 사용하되,
10자가 넘으면 컨버터에서 내용을 바꿔주어 화면에 출력하게 됩니다.

물론, 프로퍼티를 추가하는게 컨버터를 구현하는거 보다 낫지않냐-_-?? 라고하시면 할말이 없지만,
이렇게 한번 구현해 놓으면 여러번 재사용이 가능하기 때문에 좀 .. 괜찮지 않냐고 우겨보..........아도되나요?

StringFormat의 경우는
정말 평소에 많이 사용하는 string.Format처럼 사용할 수 있기 때문에 이 외에도 많이 응용할 수 있을 것으로 예상됩니다.

다음은 간단하게 구현해본 예제파일입니다.


감사합니다.
저작자 표시
신고
Posted by 천재소녀*
이전버튼 1 2 3 4 5 6 7 ··· 51 이전버튼

블로그 이미지
꿈꾸는아이, ㅋ Tasha의 완전범죄 구상소
천재소녀*

공지사항

Yesterday23
Today8
Total156,845

달력

 « |  » 2017.11
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

최근에 받은 트랙백

글 보관함