Đ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>
Nguồn
2012-11-08 11:01:19
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? –
@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