< | < |
> | > |
& | & |
" | " |
<!-- Display special characters that require special encoding: < > & " --> <TextBlock> < <!-- Less than symbol --> > <!-- Greater than symbol --> & <!-- Ampersand symbol --> " <!-- Double quote symbol --> </TextBlock> <!-- Display miscellaneous special characters --> <TextBlock> Cæsar <!-- AE dipthong symbol --> © 2006 <!-- Copyright symbol --> Español <!-- Tilde symbol --> ¥ <!-- Yen symbol --> </TextBlock>
컨트롤을 사용하는 것은 그나마 쉬운데, 데이터 바인딩 쪽은 바인딩할 데이터 소스 설정과 바인딩 소스 연결 부분이 쉽지 않다.
바인딩(걸수 있는)소스
Mode (연결 방식)
WPF * url : http://msdn.microsoft.com/ko-kr/library/aa970268(v=vs.110).aspx * 이전에 ASP.NET, Windows Forms 등의 관리되는 기술을 사용하여 .NET Framework으로 응용 프로그램을 작성해 본 경험이 있는 개발자에게는 기본 WPF 프로그래밍 환경이 매우 친숙하답니다. Binding 바인딩(걸수 있는)소스 CLR 개체 XML 데이터 또는 파일 ADO.Net 데이터 UIElement(?) List와 같은 목록 개체 Mode OneWay TwoWay OneWayToSource 정적 바인딩의 예 <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:thisapp="clr-namespace:ThisApp" Title="TestCode"> <!-- Window 태그의 리소스 부분에 (??)를 연결 --> <Window.Resource> <!-- SomeList1, SomeList2 라는 클래스를 "SomeList1", "SomeList2"로 정의한다. --> <thisapp:SomeList1 x:Key="SomeList1"/> <thisapp:SomeList2 x:Key="SomeList2"/> </Window.Resource> <!-- 위에서 정의한 리소스를 DataContext에 선언해서 사용한다. --> <TextBlock Name="textBox2" DataContext="{StaticResource SomeList1}"> <TextBlock.Text> <Binding Path="DefaultText"/> </TextBlock.Text> </TextBlock> </Window> - 윈도우가 아닌 탭 또는 그리드에도 ".Resource"가 붙는다면 정의 가능. MSDN 레퍼런스 - [[http://msdn.microsoft.com/ko-kr/library/ms752039(v=vs.110).aspx|데이터바인딩방법]] - [[http://msdn.microsoft.com/ko-kr/library/ms752347(v=vs.110).aspx#binding_to_collections|컬렉션에 바인딩]] - [[http://msdn.microsoft.com/ko-kr/magazine/cc700358.aspx|데이터 바인딩과 WPF를 사용한 데이터 표시 사용자 지정]]
= StackPanel : StackPanel 태그 안쪽의 컨트롤을 차곡차곡 순서대로 배열해서 보여준다. = Grid : StackPanel같은 자동 정렬 없이, 유저가 배치한 그대로 화면에 표시 = ListBox : 리스트박스 (위에서 아래로 쭉 가는) = ListView : 리스트뷰. 윈도우즈의 그것. = Expander : 이것 아래 항목을 폴딩하는 그것 = sys:DateTime : 날짜나 시간 = ComboBox : cb = ComboBoxItem : cbi = ListBox : 리스트박스 = ListBoxItem : 리스트박스아이템 = SelectedItems : 리스트박스 같은 거에서 여러개 선택 = ListView : 리스트뷰 = ListView.View : 리스트뷰의 뷰? = TextBox : 한줄 이상의 내용을 입력 = InkCanvas : 마우스나 스타일러스로 수기 작성된 내용을 인식하기 위한 컨트롤
셀렉터(selector)컨트롤
공통 프로퍼티?
셀렉터 컨트롤의 개별 아이템의 첨부 프로퍼티
리스트박스
리스트뷰
서브프로퍼티
윈도우 엘리먼트 외관
CommandLine 얻기
Application class
중복 실행 방지
bool _mutex; using( System.Threading.Mutex m = new System.Threading.Mutex(true, _NAME_, out _mutex) ) { if(_mutex) // 첫번째 인스턴스. 프로그램 실행. else // 이미 실행 중
WhoWeAreDialog _dlg = new WhoWeAreDialog(); _dlg.Owner = this; // xaml에는 WindowStartupLocation='CenterOwner' 프로퍼티가 추가되어 있다. _dlg.ShowDialog();
미지원 대화상자는 System.Windows.Forms.dll 을 사용한다.
아래 클래스 써서 파일에 환경 값을 쓰거나 읽어온다.
'내문서'폴더에 숨김 속성으로 데이터를 파일로 저장한다.
실용적인 예제인가?
NavigationService.Navigate(_OTHER_PAGE_); // or NavigationService.Navigate(new Uri("_OTHER_PAGE.xaml", UriKind.Relative)); // or NavigationService.Navigate(new Uri("_REAL_WEB_URL_"));
<TextBlock> Click <Hyperlink NavigateUri="_OTHER_PAGE_.xaml">here</Hyperlink> </TextBlocK>
페이지 탐색의 히스토리. Back, Forward 지원해서 남아 있는 기록대로 페이지 전환한다.
<Window x:Class="ConvToUTF8.GadgetWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:ConvToUTF8" mc:Ignorable="d" Title="GadgetWindow" Height="300" Width="300" AllowsTransparency='True' WindowStyle='None' Background='Transparent' MouseLeftButtonDown='Window_MouseLeftButtonDown'> <!-- AllowsTransparency, WindowStyle, Background 설정해서 가젯 스타일로 --> <Grid> <Ellipse Fill='Red' Opacity='0.5' Margin='20'> <Ellipse.BitmapEffect> <DropShadowBitmapEffect/> </Ellipse.BitmapEffect> </Ellipse> <Button Margin='100' Click='Button_Click'>CLOSE</Button> </Grid> </Window>
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace ConvToUTF8 { /// <summary> /// GadgetWindow.xaml에 대한 상호 작용 논리 /// </summary> public partial class GadgetWindow : Window { public GadgetWindow() { InitializeComponent(); } void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { this.DragMove(); } void Button_Click(object sender, RoutedEventArgs e) { this.Close(); } } }