2012-11-08 4 views
8

웹 개발에서 스타일 시트는 매우 일반적으로 사용됩니다. Swing에는 GUI 처리를위한 레이아웃 관리자가있었습니다. XAML이 이러한 패러다임 중 하나를 적용한다는 가정을 수정합니까? 양자 모두? 어떤 경우에 그런 것이 좋습니다.XAML의 CSS와 동일

나는 intellisense를 확인했지만 Style 필드를 받아 들였습니다. 특별히 눈에 띄는 것은 없었고 어떤 키워드를 사용해야할지 잘 모르겠습니다. 제안? 이 CSS로 여러 개의 파일로 제공 될 수 있도록 어셈블리에 리소스로 스타일을 저장하는

답변

8

더 나은 방법

확인할 수 있습니다 : 또한 Silverlight and styles

을 확인하십시오 How to set Silverlight Control Styles via Application.Resources

넣어 스타일을 좋아 이 Application.Xaml 파일에 또는 당신을 위해 새로 생성

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      x:Class="AppResStyle.App" 
      > 
    <Application.Resources> 
     <Style x:Key="ButtonStyle" TargetType="Button"> 
      <Setter Property="BorderBrush" Value="Green" /> 
      <Setter Property="Foreground" Value="Blue" /> 
    </Style> 
    </Application.Resources> 
</Application> 

이제 t처럼 활용할 수 있습니다. 그의 여러 스타일에서 버튼에 스타일 지정하기

<UserControl x:Class="AppResStyle.Page" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="130" Height="80"> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <Button Content="Button1" Height="75" Width="125" Style="{StaticResource ButtonStyle}" /> 
    </Grid> 
</UserControl> 
+0

나는 그것이 어떻게 작동하는지 알고 있다고 생각합니다.그러나, 나는 [이 토론] (http://stackoverflow.com/questions/1316405/how-to-set-a-top-margin-only-in-xaml)을 발견했으며, 내가 이해할 수있는 한, 오직 예를 지정하는 방법 모든 구성 요소의 왼쪽 여백. 어떻게해야합니까? 왼쪽 여백은 고정 된 채로 있어야하지만, 위쪽 여백을 점차 늘려야하므로 여러 개의 텍스트 블록이 있습니다. 수평으로 정렬 된 텍스트 블록 세트를 만드는 현명한 방법이 있습니까? –

+0

XAML 레이아웃과 같은 @Andyj 사운드는이 작업을 수행하는 도구입니다. http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh465329.aspx – AlexStack

9

당신이 찾고있는 것은 ResourceDictionary입니다. 이것은 App.Resources 요소에 스타일을 두는 것보다 훨씬 융통성이 있으며 스타일 범위를 훨씬 더 잘 제어 할 수 있습니다.

  • 정말 빨리 작성하고 큰, 비 대한 목록
  • 전 세계적으로 사용할 수 있습니다 모든 스타일로 변신 할 수 있습니다 : 당신의 App.Resources에

    퍼팅 스타일은 단점을 가지고 있습니다. 너는 그걸 원하지 않을거야. ResourceDictionary의 사용

대부분이 해결

  • 스타일은 사용자가 제어 할 수있는 하나 이상의 어셈블리에 보관 될 수 있으며, resourcedictionaries을 포함하여 (여부)에 의해 appplications
  • 에 걸쳐 재사용 할
      어떤 스타일 당신은 그룹과
    논리적 인 방식으로 스타일과 템플릿을 구성 할 수있는 페이지
  • 에 추가리소스 사전은 CSS 파일과 매우 유사하게 매핑됩니다. 당신은 전체 제어 유형 또는 걸쳐 적용 할 수 있습니다 스타일처럼,

    • 스타일
    • ControlTemplates 및 DataTemplates
    • 브러쉬 등

    그리고 : 기본적으로, 당신은 일의 혼합을 저장하려면 다음을 사용 명명 된 스타일을 사용하는 컨트롤에 적용

    <UserControl.Resources> 
         <ResourceDictionary> 
          <ResourceDictionary.MergedDictionaries> 
           <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Styles/DialogStyles.xaml"/> 
           <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Icons/Error.xaml"/> 
           <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Icons/Exit.xaml"/> 
           <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Icons/Warning.xaml"/> 
          </ResourceDictionary.MergedDictionaries> 
         </ResourceDictionary> 
    </UserControl.Resources> 
    

    ResourceDictionary :정의

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options" 
             xmlns:sys="clr-namespace:System;assembly=mscorlib" 
             xmlns:Infrastructure="clr-namespace:Hsbc.Ice.Shell.Infrastructure" 
             xmlns:Ui="clr-namespace:Hsbc.Ice.Shell.Infrastructure.Ui"> 
    
         <LinearGradientBrush x:Key="{x:Static Ui:Brushes.SelectedRowBackgroundBrushKey}" StartPoint="0.5,0" EndPoint="0.5,1" 
               po:Freeze="True"> 
          <GradientStop Color="#4D5F6E96" Offset="0"/> 
          <GradientStop Color="#2191A0BE" Offset="0.2"/> 
          <GradientStop Color="#2191A0BE" Offset="0.45"/> 
          <GradientStop Color="#745F6E96" Offset="1"/> 
         </LinearGradientBrush> 
        </ResourceDictionary>