2019년 1월 26일 토요일

WPF 데이터바인딩, x:Static, Source를 통한 데이터 바인딩(DateTimeFormatInfo를 이용한 요일정보를 ListBox, TextBlock에 바인딩)

WPF 데이터바인딩, x:Static, Source를 통한 데이터 바인딩(DateTimeFormatInfo를 이용한 요일정보를 ListBox, TextBlock에 바인딩)
n ElementName으로 바인딩의 소스를 명시하는 것 대신 Binding 클래스의 Source 프로퍼티를 사용하여 바인딩 하는 것이 가능한데 Source 프로퍼티는 객체를 참조하고 Path는 객체의 프로퍼티를 참조한다.
n Source를 사용하기 위한 한 가지 방법은 x:Static 마크업을 확장해야 되는데 x:Static은 XAML에서 클래스 내의 정적필드나 프로퍼티를 참조할 수 있게 한다.
n System.Globalization 네임스페이스에 있는 DateTimeFormatInfo 클래스의 DayName 프로퍼티는 요일에 해당하는 문자열 배열을 반환하는 인스턴스 프로퍼티다. DateTimeFormatInfo 클래스는 두 개의 정적 프로퍼티를 제공하는데 InvariantInfo는 변함 없는 문화권을 지원하며 CurrentInfo는 사용자 자신의 현재 문화권을 지원한다.
C#에서는 다음과 같이 요일에 해당하는 문자열 배열을 현재 사용자의 문화권으로 지정한다.
string[] dayNames = DateTimeFormatInfo.CurrentInfo.DayNames;
n MainWindow.xaml
<Window x:Class="DayNames.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:g="clr-namespace:System.Globalization;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<!-- 한번만 바인딩 -->
<ListBox Name="lstbox"
HorizontalAlignment="Center"
Margin="24"
ItemsSource="{Binding
Source={x:Static g:DateTimeFormatInfo.CurrentInfo},
Path=DayNames,
Mode=OneTime}" />
<!-- 리스트박스의 SelectedItem 속성과 TextBlock의 Text속성을 바인딩 -->
<TextBlock HorizontalAlignment="Center"
Text="{Binding ElementName=lstbox,
Path=SelectedItem, Mode=OneWay}" />
</StackPanel>
</Window>
n 실행결과

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...