파일내에서 참조

<Window.Resources>

<!--Window내에서 모두 사용가능-->

<SolidColorBrush x:Key="yellowBrush" Color="Yellow"/>

</Window.Resources>

<StackPanel>

<!--확장프로퍼티{}-->

<!--실제코드는 전과 차이가 없지만. 일괄수정시 편하다-->

<Button Margin="5,5" Background="{StaticResource yellowBrush}">버튼</Button><Button Margin="5,5" Background="{StaticResource yellowBrush}">버튼</Button>

</StackPanel>

 

프로젝트(?) 전체에서 참조 - ResourceDitionary 사용

 

-ResourceDictionary

 

<--프로젝트 솔루션에서 /추가 - 리소스사전/  (Dictionary1.xaml) -->

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<SolidColorBrush x:Key="testBrush" Color="Red"/><!--단일자원 리소스-->

</ResourceDictionary>

-사용

 

 

<Window.Resources>

<ResourceDictionary Source="Dictionary1.xaml"/><!--리소스사전 참조-->

</Window.Resources>

<StackPanel>

<!--사용방법은 똑같다-->

<Button Background="{StaticResource testBrush}">버튼1</Button>

<Button Background="{StaticResource testBrush}">버튼2</Button>

<Button Background="{StaticResource testBrush}">버튼3</Button>

</StackPanel>



by 피요히코~ 2009. 2. 25. 12:55

 

<Stackpanel>

<!--변형(Transform)-->

<Button Margin="0" Width="50" Height="50">버튼</Button>

<!--RenderTransformOrigin="1,1" - 우측하단기준점설정(05.,05 버튼 중심)-->

<Button Margin="0" Width="50" Height="50" RenderTransformOrigin="0.5,0.5">

<Button.RenderTransform> <!-- <Button.LayoutTransform> 컨트롤이 서로 겹치지 않게 변형되게 해준다-->

<RotateTransform Angle="45"/> <!--회전변형을 위한 Element 디폴트 기준축은 좌측상단(0,0)-->

</Button.RenderTransform>

<Button.Content>

버튼1

</Button.Content>

</Button>

 

<Button Margin="0" Width="50" Height="50" RenderTransformOrigin="0.5,0.5">

<Button.RenderTransform>

<RotateTransform Angle="45"/>

</Button.RenderTransform>

<Button.Content>

버튼2

</Button.Content>

</Button>

 

<Button Margin="0" Width="50" Height="50" RenderTransformOrigin="0.5,0.5">

<Button.RenderTransform>

<ScaleTransform ScaleX="2" ScaleY="2"/><!--확대하고싶은 배율(0.5 반으로 줄어듬) 모든 변형을 기준점이 있음-->

</Button.RenderTransform>

<Button.Content>

버튼3

</Button.Content>

</Button>

 

<Button Margin="0" Width="50" Height="50" RenderTransformOrigin="0.5,0.5">

<Button.RenderTransform>

<SkewTransform AngleX="30" AngleY="30"/><!--비트는 변형-->

</Button.RenderTransform>

<Button.Content>

버튼4

</Button.Content>

</Button>

</StackPanel>


 

 

by 피요히코~ 2009. 2. 25. 12:53

<UniformGrid>

<Button Click="Button_Click">확인</Button>

<!--popupAnimation : 사라지는효과/ placement : 나타나는 위치/ AllowsTransparency : 배경투명-->

<Popup PopupAnimation="Fade" Placement="Mouse" Name="popup1" AllowsTransparency="True">

<!--테두리 감싸는 속성-->

<Border Padding="10" BorderThickness="1" CornerRadius="20" BorderBrush="Red" Background="White"> <TextBlock>테스트</TextBlock>

</Border>

</Popup>

 

<MediaElement Width="160" Height="120" Name="media1"></MediaElement><!--Media재생용-->

 

<StackPanel>

<Button Click="Button_Click_1">재생</Button>

<Button Click="Button_Click_2">멈춤</Button>

</StackPanel>

</UniformGrid>

 

 


 

이벤트 

private void Button_Click(object sender, RoutedEventArgs e)//button클릭

{

if (popup1.IsOpen)

popup1.IsOpen = false;

else

popup1.IsOpen = true;

}

 

private void Button_Click_1(object sender, RoutedEventArgs e)//미디어재생용 (시작)

{

media1.Source = new Uri(@"D:\[06]WPF\dh.wmv"); //소스 경로지정

media1.LoadedBehavior = MediaState.Manual;

media1.Play();

}

 

private void Button_Click_2(object sender, RoutedEventArgs e)//미디어재생용 (멈춤)

{

media1.Stop();

}

 


 

by 피요히코~ 2009. 2. 25. 12:53

 

<!--TreeView, Menu, Toolbar Tray-->

<DockPanel>

<Menu DockPanel.Dock="Top">

<!--Menu : DockPanel Dock속성을 위로-->

<MenuItem Header="파일(_F)">

<MenuItem Header="열기(_O)" Click="MenuItem_Click"        />

<!--Click Event-->

<MenuItem Header="닫기(_X)"/>

</MenuItem>

<MenuItem Header="편집(_E)">

<MenuItem Header="잘라내기(_C)"/>

<MenuItem Header="붙여넣기(_P)"/>

<MenuItem Header="삭제(_D)"/>

</MenuItem>

</Menu>

 

<TabControl DockPanel.Dock="Top">

<TabItem Header="페이지1">

<!--이게 TabPage-->

<StackPanel>

<!--TabItem 자식을 하나만 가질수 있으므로 다른 많은 자식을 가질수 있는 Content 사용(Ex StackPanel)-->

<Button>페이지1버튼</Button>

<TextBox/>

<RichTextBox></RichTextBox>

<PasswordBox></PasswordBox>

<InkCanvas Width="300" Height="200" Background="Yellow"/>

</StackPanel>

</TabItem>

 

<TabItem Header="페이지2">

<StackPanel>

<!--IsExpanded : 창이 열리자마자 열려있게 할지 여부-->

<Expander Header="항목1" IsExpanded="True">

<GroupBox Header="소항목1">

<TextBlock>테스트...</TextBlock>

</GroupBox>

</Expander>

<Expander Header="항목2">

<TextBlock>테스트2...</TextBlock>

</Expander>

<TreeView>

<TreeViewItem Header="데이터베이스">

<TreeViewItem Header="시스템 데이터베이스"/>

<TreeViewItem Header="Northwind"/>

</TreeViewItem>

<TreeViewItem Header="보안">

<TreeViewItem Header="로그인">

<TreeViewItem Header="Windows"/>

<TreeViewItem Header="Passport"/>

<TreeViewItem Header="Forms"/>

</TreeViewItem>

</TreeViewItem>

<TreeViewItem Header="자격증명"/>

<TreeViewItem Header="서버역할"/>

</TreeView>

</StackPanel>

</TabItem>

</TabControl>

 

<ToolBarTray DockPanel.Dock="Top">

<!--ToolBarTray-->

<ToolBar>

<Button>새프로젝트</Button>

<Button>열기</Button>

<Button>저장</Button>

</ToolBar>

<ToolBar>

<!--사용하기위해 이름지정-->

<TextBox Width="100" x:Name="txtSerch"/>

<Button Content="검색하기" Click="Button_Click"/>

<!--Click Event-->

</ToolBar>

</ToolBarTray>

</DockPanel>


 

 

by 피요히코~ 2009. 2. 25. 12:52

<XAML>

<Canvas><!--Canvas에서는 좌표가 같을경우 진짜로 두 Contents가 겹쳐있는거다. (다른경우는 앞에껄 빼고 들어간것)-->

<Button Canvas.Left="100" Canvas.Top="50">Btn1</Button> <!--맞춘 방향을 기준으로 Ancher-->

<Button Canvas.Left="200" Canvas.Top="100">Btn2</Button>

</Canvas>


 

 

<C#>

  - XAML

 

<Canvas Name="canvas"></Canvas>

 

 

   - C#

 

Button btn1 = new Button();

btn1.Content = "Btn1";

canvas.Children.Add(btn1);//<canvas>에 넣고

Canvas.SetLeft(btn1, 100);//위치지정

Canvas.SetTop(btn1, 50);

 

Button btn2 = new Button();

btn2.Content = "Btn2";

canvas.Children.Add(btn2);

Canvas.SetLeft(btn2, 200);

Canvas.SetTop(btn2, 100);



by 피요히코~ 2009. 2. 25. 12:51

<XAML>

<UniformGrid Columns="2" Rows="2"><!-- 디폴트 :Panel처럼 알아서 Contents를 넣어줌

(화면크기에 맞춰서 알아서) 행이나 열갯수를 정해주면 그거에 맞춤/ 행과열을 모두 정해주면

그에맞는 수만큼만 넣어주고 나머지는 가려짐-->

<Button>Btn1</Button>

<Button>Btn2</Button>

<Button>Btn3</Button>

<Button>Btn4</Button>

<Button>Btn5</Button>

<Button>Btn6</Button>

<Button>Btn7</Button>

</UniformGrid>


 

 

<C#>

   - XAML

<UniformGrid Columns="5" Rows="5" Name="grid">

</UniformGrid>

 

   - C#

for (int i = 0; i < 7; i++)

{

Button btn = new Button();

btn.Content = "Btn" + i.ToString();

grid.Children.Add(btn);

}


by 피요히코~ 2009. 2. 25. 12:50

<XAML> 

 

 <Grid ShowGridLines="True"> <!--ShowGridLines : 그리드 라인 보이기 옵션-->

<Grid.ColumnDefinitions> <!--3열 정의-->

<ColumnDefinition Width="50"></ColumnDefinition>

<ColumnDefinition Width="*"></ColumnDefinition>

<ColumnDefinition Width="50"></ColumnDefinition>

</Grid.ColumnDefinitions>

<Grid.RowDefinitions><!--2행 정의-->

<RowDefinition Height="50"></RowDefinition>

<RowDefinition></RowDefinition>

</Grid.RowDefinitions>

<!--<Button Grid.Column="0">Btn1</Button>--><!--들어갈 열값 명시 - 디폴드는 다 0행0열-->

<StackPanel Grid.Column="0">

<Button>Btn1</Button>

<Button>Btn4</Button>

</StackPanel>

<Button Grid.Column="1">Btn2</Button>

<Button Grid.Column="2">Btn3</Button>

<!--Grid는 들어갈 행과 열을 하나하나 지정해줘야함-->

<Button Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2">Btn5</Button> </Grid>

 


 

 

<C#>

//Grid

Grid grid = new Grid();

this.Content = grid;

grid.ShowGridLines = true; //gridline

RowDefinition row = new RowDefinition();//행

row.Height = new GridLength(100);//높이지정  //전체크기가 300x300

grid.RowDefinitions.Add(row);

row = new RowDefinition();

row.Height = GridLength.Auto;

grid.RowDefinitions.Add(row);

ColumnDefinition col = new ColumnDefinition();//열

col.Width = new GridLength(100);//너비지정

grid.ColumnDefinitions.Add(col);

col = new ColumnDefinition();

grid.ColumnDefinitions.Add(col);

//Label

Label label = new Label();

label.Content = "문자열 : ";

grid.Children.Add(label); //일단 label을 grid에 넣어준다. 그 후에 장소지정

Grid.SetRow(label, 0);//0행 <Label Grid.Row="0">

Grid.SetColumn(label, 1);//0열 <Label Grid.Colum="1">

//TestBox

TextBox txt = new TextBox();

txt.BorderBrush = Brushes.Red;

txt.BorderThickness = new Thickness(1);

grid.Children.Add(txt);

Grid.SetRow(txt, 1);

Grid.SetColumn(txt, 1);

//Button

Button btn = new Button();

btn.Content = "버튼";

grid.Children.Add(btn);

Grid.SetRow(btn, 0);

Grid.SetColumn(btn, 0);//일단 위치 지정후 병합

Grid.SetRowSpan(btn, 2); //병합할대상, 병합할 셀의 수  //<Button Grid.RowSpan="2">


by 피요히코~ 2009. 2. 25. 12:50

<WarpPanel>

<ScrollViewer>

<WrapPanel Orientation="Horizontal" ItemWidth="50" ItemHeight="50">

<!--자동개행이 되는 패널/ 디폴트로 Contents의 크기가 그 Contents의 Contents크기로 들어짐(Button내용에 맞게 크기가 정해짐)-->

<!--하지만 가로로만 자동으로 맞춰지고. 세로로는 맞춰지지 않음 >> ScrollViewer사용-->

<Button>Btn</Button>

<Button>Btn</Button>

<Button>Btn</Button>

<Button>Btn</Button>

</WrapPanel>

</ScrollViewer>

 

====================================================================================================== 

 

<DockPanel>

<DockPanel LastChildFill="False"><!--디폴트 : 마지막으로 들아가는 Contents가 Fill로 채워짐(LastChildFill = "False"하면 풀림)-->

<Button DockPanel.Dock="Top">Btn1</Button> <!--붙는 방향지정-->

<Button DockPanel.Dock="Left">Btn2</Button><!--자신이 마지막 Contents라면 방향을 지정해도 그냥 Fill-->

</DockPanel>


by 피요히코~ 2009. 2. 25. 12:49
| 1 2 3 |