2012-11-08 32 views
8

Trong phát triển web, các bảng định kiểu thường được sử dụng. Trong Swing, tôi nhớ lại, đã có các trình quản lý bố cục để xử lý GUI. Tôi có đúng với giả định rằng XAML áp dụng một trong những mô hình đó không? Cả hai? Cái nào được ưa thích hơn trong trường hợp này.Tương đương với CSS trong XAML

Tôi đã kiểm tra intellisense nhưng chấp nhận cho lĩnh vực Style, tôi không tìm thấy bất cứ điều gì đặc biệt rõ ràng và tôi không rõ ràng những từ khóa để google cho. Gợi ý?

Trả lời

8

Better cách để lưu trữ kiểu như một nguồn lực trong việc lắp ráp để nó có thể có sẵn trong nhiều file như css

bạn có thể kiểm tra: Silverlight and styles

Ngoài ra kiểm tra: phong cách How to set Silverlight Control Styles via Application.Resources

đặt như điều này trong tệp Application.Xaml hoặc tạo một tệp mới cho bạn

<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> 

Bây giờ bạn có thể sử dụng như t của mình trong nhiều uercontrol để chỉ định kiểu cho nú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

Tôi nghĩ tôi thấy nó hoạt động như thế nào.Tuy nhiên, tôi đã tìm thấy [thảo luận này] (http://stackoverflow.com/questions/1316405/how-to-set-a-top-margin-only-in-xaml) và theo tôi có thể hiểu, không có cách để chỉ xác định ví dụ lề trái cho tất cả các thành phần. Làm thế nào là một trong những nghĩa vụ phải làm điều đó? Tôi sẽ có một loạt các khối văn bản để lề trên cần tăng dần, trong khi lề trái cần phải cố định. Có cách nào thông minh hơn để tạo tập hợp khối văn bản theo chiều ngang không? –

+0

@Andyj âm thanh như bố cục XAML là công cụ để thực hiện công việc đó: http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh465329.aspx – AlexStack

9

Điều bạn đang tìm kiếm là ResourceDictionary. Điều này linh hoạt hơn nhiều so với việc chỉ đặt các kiểu trong phần tử App.Resources của bạn và cho phép bạn kiểm soát nhiều hơn phạm vi phong cách của mình.

Đưa Styles trong App.Resources của bạn có một số nhược điểm:

  • Nó có thể lấp đầy thực sự nhanh chóng và trở thành một lớn, danh sách cồng kềnh
  • Mỗi kiểu có sẵn trên toàn cầu. Bạn có thể không muốn điều đó.

Sử dụng Một ResourceDictionary chủ yếu sửa lỗi này:

  • Styles có thể được giữ trong một hoặc nhiều bộ phận nhỏ và được tái sử dụng trên appplications
  • Bằng cách đưa resourcedictionaries (hoặc không), bạn có thể kiểm soát những gì phong cách được thêm vào một trang
  • Bạn có thể nhóm và sắp xếp kiểu và mẫu theo cách hợp lý với mình

Một bản đồ từ điển tài nguyên khá chặt chẽ với một tệp CSS. Về cơ bản, bạn sử dụng chúng để lưu trữ một sự pha trộn của sự vật:

  • Styles
  • ControlTemplates và DataTemplates
  • Brushes, vv

Và, giống như stylesheets bạn có thể áp dụng chúng trên toàn bộ các loại điều khiển hoặc để kiểm soát sử dụng kiểu được đặt tên

<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> 

Định nghĩa tài nguyênDictionary:

<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> 
Các vấn đề liên quan