티스토리 뷰
리소스 http://www.wpf-tutorial.com/wpf-application/resources/
데이터를 리소스로서 control을 위해서는 local로, 전체 window를 위해서 local 또는 global로 저장이 가능합니다.
데이터는 실제 정보에서 wpf 컨트롤 계층 구조까지 원하는 것이 무엇이든지 될 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <Window x:Class="WPF_tutorial.MainWindow" 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:WPF_tutorial" xmlns:system="clr-namespace:System;assembly=mscorlib" 이 부분을 필수로 추가시켜주어야 합니다. mc:Ignorable="d" Title="MainWindow" Height="150" Width="350"> <Window.Resources> <system:String x:Key="strHelloWorld">Hello, world!</system:String> 리소스를 x:Key(attribute)를 이용하여 key값이 부여해라. </Window.Resources> <StackPanel Margin="10"> <TextBlock Text="{StaticResource strHelloWorld}" FontSize="56" /> TextBlock은 STaticResource가 strHelloWold인 리소스를 사용, FontSize를 56의 속성을 부여해라. <TextBlock>Just another "<TextBlock Text="{StaticResource strHelloWorld}" />" example, but with resources!</TextBlock> </StackPanel> </Window> | cs |
StaticResource vs DynamicResource
StaticResource의 경우 태그의 확장을 이용하여 리소스를 참조하였습니다.
StaticResource는 XAML의 load time에 한 번만 해결된다는 것입니다. 나중에 리소스를 변경하면 다른 곳에서는 변경 사항이 반영되지 않습니다.
DynamicResource의 경우, 리소스가 변경되면 해당 변경사항이 적용됩니다.
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 | <Window x:Class="WPF_tutorial.MainWindow" 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:WPF_tutorial" xmlns:system="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d" Title="MainWindow" Height="150" Width="350" Background="{DynamicResource WindowBackgroundBrush}"> 추가해주어야한다! <Window.Resources> <system:String x:Key="ComboBoxTitle">Items:</system:String> <x:Array x:Key="ComboBoxItems" Type="system:String"> string type의 배열을 만들어라. <system:String>Item #1</system:String> <system:String>Item #2</system:String> <system:String>Item #3</system:String> </x:Array> <LinearGradientBrush x:Key="WindowBackgroundBrush"> key값은 WindowBackgroundBrush로 하고, silver와 gray로 그라데이션을 부여해라. <GradientStop Offset="0" Color="Silver"/> <GradientStop Offset="1" Color="Gray"/> </LinearGradientBrush> </Window.Resources> <StackPanel Margin="10"> <Label Content="{StaticResource ComboBoxTitle}" /> string을 label에 사용해라. <ComboBox ItemsSource="{StaticResource ComboBoxItems}" /> string 배열을 ComboBox control의 항목으로 사용해라. </StackPanel> | cs |
window 전체에서 리소스에 액세스 할 수 있다.
1 2 3 4 5 6 | <Window.Resources> <system:String x:Key="ComboBoxTitle">Items:</system:String> 는 제거 <StackPanel Margin="10"> <StackPanel.Resources> <system:String x:Key="ComboBoxTitle">Items:</system:String> 리소스를 StackPanel에 추가, 하위 control인 label에서 사용 </StackPanel.Resources> <Label Content="{StaticResource ComboBoxTitle}" /> </StackPanel> | cs |
App.xaml는 프로젝트의 window, control에 모두 액세스할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 | App.xaml <Application x:Class="WPF_tutorial.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WPF_tutorial" StartupUri="MainWindow.xaml" xmlns:system="clr-namespace:System;assembly=mscorlib"> <Application.Resources> <system:String x:Key="ComboBoxTitle">Items:</system:String> </Application.Resources> </Application> | cs |
1 2 3 4 5 6 | MainWindow.xaml <StackPanel Margin="10"> <Label Content="{StaticResource ComboBoxTitle}" /> <ComboBox ItemsSource="{StaticResource ComboBoxItems}"/> </StackPanel> | cs |
Code-behind 리소스
위의 경우 XAML에서 직접 리소스에 액세스하였습니다. 그러나 cod-behind에서도 리소스에 액세스할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | App.xaml <Application x:Class="WPF_tutorial.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WPF_tutorial" StartupUri="MainWindow.xaml" xmlns:system="clr-namespace:System;assembly=mscorlib"> <Application.Resources> <system:String x:Key="strApp">Hello, Application world!</system:String> App의 리소스의 key값을 strApp로, 내용을 Hello, Application world!로. </Application.Resources> </Application> | cs |
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 | MainWindow.xaml <Window x:Class="WPF_tutorial.MainWindow" 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:WPF_tutorial" xmlns:system="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d" Title="MainWindow" Height="150" Width="350"> <Window.Resources> <system:String x:Key="strWindow">Hello, Window world!</system:String> Window의 리소스의 key값을 strWindow로, 내용을 Hello, Window world!로. </Window.Resources> <DockPanel Margin="10" Name="pnlMain"> <DockPanel.Resources> <system:String x:Key="strPanel">Hello, Panel world!</system:String> Panel의 리소스의 key값을 strPanel로, 내용을 Hello, Panel world!로. </DockPanel.Resources> <WrapPanel DockPanel.Dock="Top" HorizontalAlignment="Center" Margin="10"> <Button Name="btnClickMe" Click="btnClickMe_Click">Click_me</Button> </WrapPanel> <ListBox Name="lbResult"></ListBox> </DockPanel> </Window> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | MainWindow.xaml.cs namespace WPF_tutorial { /// <summary> /// MainWindow.xaml에 대한 상호 작용 논리 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void btnClickMe_Click(object sender, RoutedEventArgs e) { FindResource()(method)를 이용하여, 리소스를 발견할 경우, 객체로 반환하고, Tostring()(method)를 이용해서 문자열로 변환하여라. lbResult.Items.Add(pnlMain.FindResource("strPanel").ToString()); lbResult.Items.Add(this.FindResource("strWindow").ToString()); lbResult.Items.Add(Application.Current.FindResource("strApp").ToString()); } } } | cs |
'C# > WPF' 카테고리의 다른 글
WPF tutorial - The TextBlock control (0) | 2017.06.20 |
---|---|
WPF tutorial - Handling exceptions in WPF (0) | 2017.06.20 |
WPF tutorial - Command-line parameters in WPF (2) | 2017.06.20 |
WPF tutorial - App.xaml로 작업하기 (0) | 2017.06.20 |
WPF tutorial - window (0) | 2017.06.20 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Cell Animation
- FEED
- 객체
- command
- dfs
- BOJ
- 타일링
- Grid
- DP
- CollectionView
- 생활코딩
- WPF
- UIView Animation
- Fakebook
- 문자열
- 스택
- Custom Cell
- 백준온라인
- listview
- XAML
- CustomCollectionViewCell
- 백준
- 데이터 바인딩
- MVVM
- Add TapGesture
- 코딩야학
- C++
- 그래프
- BFS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함