2013-12-18 16 views
7

Tôi muốn triển khai một loại Mẫu Nhà máy cho XAML. Tôi đã tạo một ứng dụng cho WinRT, nơi tôi đã định nghĩa hai tệp kiểu xaml. Về cơ bản, những gì tôi muốn đạt được (nếu có thể) là tải một trong hai tệp xaml khi ứng dụng bắt đầu. trong solution explorer Tôi có điều này:XAML WinRT - Mẫu Nhà máy cho Phong cách Tuỳ chỉnh

enter image description here

CustomStyles foder chứa các tập tin kiểu. Vì vậy, dựa trên một điều tra viên trong App.xaml.cs tập tin của tôi

public enum Style 
{ 
    Style_1, 
    Style_2 
} 

nếu tôi chọn Style_1 Tôi muốn tải các tập tin XAML Style_1.xaml khác Style_2.xaml tại thời gian chạy. Cả hai tệp kiểu đều có cùng định nghĩa về kiểu Nút, kiểu TextBlock, v.v. với các giá trị thuộc tính khác nhau. đây một ví dụ:

Style_1.xaml

<Style x:Key="Attribute_Label" TargetType="TextBlock"> 
    <Setter Property="FontFamily" Value="Segoe UI" /> 
    <Setter Property="Foreground" Value="#78CAB3" /> 
    <Setter Property="FontSize" Value="15" /> 
    <Setter Property="FontWeight" Value="Normal" /> 
</Style> 

Style_2.xaml

<Style x:Key="Attribute_Label" TargetType="TextBlock"> 
    <Setter Property="FontFamily" Value="Arial" /> 
    <Setter Property="Foreground" Value="#606060" /> 
    <Setter Property="FontSize" Value="30" /> 
    <Setter Property="FontWeight" Value="Normal" /> 
</Style> 

Có một cách để đạt được những gì tôi muốn làm gì? Cảm ơn bạn trước.

+1

Có vẻ như bạn đang tìm kiếm [Theming] (http://stackoverflow.com/questions/11150570/how-to-implement-theming-in-wpf). Tôi không chắc chắn mức hỗ trợ mà WinRT XAML có cho điều đó. –

+0

Bạn vẫn cần tiền thưởng? :) – pinckerman

+0

Nếu bạn muốn thêm danh tiếng hơn, hãy thoải mái :) – davideberdin

Trả lời

2

Chúng tôi kết thúc để làm một cái gì đó như thế này:

  1. xác định một ResourcesDictionary trong App.xaml với tất cả các CustomStyles

  2. chúng ta thực hiện một yêu cầu máy chủ đó quyết định những phong cách tùy chỉnh phải được tải

  3. sử dụng đoạn mã này Application.Current.Resources[CustomStyleVariable]; chúng tôi tải toàn bộ kiểu trong đối tượng Kiểu.

Chúng tôi chưa tìm thấy giải pháp nào tốt hơn nhưng có vẻ như nó hoạt động.

Các vấn đề liên quan