Tôi đã triển khai skinning trong ứng dụng của mình. Ứng dụng tải từ điển tài nguyên Brushes.xaml của nó sử dụng các màu sắc nằm trong một từ điển tài nguyên cụ thể cho da. Vì vậy, chỉ có một Color.xaml được nạp tùy thuộc vào da đã chọn.Skinning: Sử dụng màu như StaticResource cho một màu khác
Skin Cụ thể Color.xaml
<Color x:Key="TextBoxBackgroundColor">#C4AF8D</Color>
<Color x:Key="TextBoxForegroundColor">#6B4E2C</Color>
<Color x:Key="ToolBarButtonForegroundColor">#6B4E2C</Color>
Brushes.xaml:
<SolidColorBrush
x:Key="TextBoxBackground"
Color="{DynamicResource TextBoxBackgroundColor}" />
<SolidColorBrush
x:Key="TextBoxForeground"
Color="{DynamicResource TextBoxForegroundColor}" />
Như bạn có thể thấy, nhiều màu sắc (TextBoxForegroundColor và ToolBarButtonForegroundColor) đều giống nhau. Tôi muốn phá vỡ điều đó vì nó ngày càng trở nên khó hiểu hơn, đặc biệt là vì các màu đã sử dụng không thể nhận biết được bởi giá trị hex của chúng. Bạn có thể tư vấn ngay bây giờ để hợp nhất cả hai màu vào một nhưng tôi có da, nơi TextBoxForegroundColor là khác nhau từ ToolBarButtonForegroundColor.
Những gì tôi muốn làm là một cái gì đó như thế này:
<Color x:Key="DarkBrown">#C4AF8D</Color>
<Color x:Key="TextBoxBackgroundColor" Color={StaticResource DarkBrown} />
<Color x:Key="ToolBarButtonForegroundColor" Color={StaticResource DarkBrown} />
Đây có phải là ở tất cả các khả năng trong XAML? Tôi không tìm được cách nào.
Điều đó trông rất thú vị nhưng tôi không làm cho nó hoạt động. Tôi đã cố gắng đặt nhưng điều này kích hoạt thông báo lỗi "Một đối tượng thuộc loại" System.Windows.DynamicResourceExtension "không thể được áp dụng cho thuộc tính mong đợi loại "System.Windows.Media.Color". Tôi có làm gì sai không? –
Amenti
Bạn cần tham khảo nó như là một StaticResource ('Color =" {StaticResource TextBoxBackgroundColor} "') bởi vì nó thực chất là một tài nguyên tĩnh mặc dù –
Tôi đã thử và bây giờ nó biên dịch và hoạt động.Nhưng tôi vẫn nhận được các lỗi trong IDE (Visual Studio 2010 Express) nhưng bây giờ liên quan đến System.Windows.StaticResourceExtension.Đây là vấn đề vì nó có hiệu quả làm tê liệt thiết kế -Thời gian sử dụng của Gui-Editor trong IDE.Nhưng vẫn tuyệt vời mà nó có thể làm việc theo cách đó.Bạn có bất cứ ý tưởng tại sao điều này xảy ra? Đây có phải là lỗi trong VS hoặc tôi đang làm điều gì đó sai? – Amenti