Tôi hơi bối rối với các chủ đề wpf. Tôi muốn có các màn hình wpf trông giống nhau trên Vista, Windows 7 và Windows 8. Vì vậy, tôi đã theo kiểu các thành phần cho phù hợp và họ không đặt ra vấn đề ngoại trừ khi chạy trên Windows 8. Ví dụ tôi có một combobox và tôi thay đổi nền mặc định của nó trong xaml như thế này.Nền hộp tổ hợp không được áp dụng trong các cửa sổ 8
<Style TargetType="{x:Type ComboBox}" >
<Setter Property="FontStyle" Value="Normal"/>
<Setter Property="Height" Value="24" />
<Setter Property="Background" Value="{StaticResource GradientButtonBackgroundBrush}"/>
</Style>
Thuộc tính combobox Bối cảnh không có tác dụng trong windows 8 và tất cả tôi nhận được là một hình chữ nhật phẳng với một mũi tên ở bên phải (cửa sổ mặc định 8 combobox, được chứ không phải được thiết kế kém!).
Vì vậy, câu hỏi của tôi là làm thế nào để tôi nhận được combobox trông giống nhau trên tất cả các phiên bản của cửa sổ. Tôi đã thử thêm cửa sổ Aero chủ đề trong App.xaml của tôi như dưới đây, nhưng nó không có hiệu lực trên màn hình combobox. Dưới đây là cách tôi thêm chủ đề Aero
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/PresentationFramework.Aero;component/themes/aero.normalcolor.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Ngoài ra còn có một nghi ngờ khác về chủ đề. Tôi đang xây dựng các ứng dụng wpf trên một cửa sổ 7 máy, mà theo mặc định (tôi tin) có Aero Theme thiết lập. Vì vậy, tất cả các phong cách của tôi dựa trên chủ đề Aero khi được xem trên máy tính Windows 7. Điều gì sẽ xảy ra nếu tôi chạy ứng dụng trên XP. Sau đó, tôi cần phải thêm một mục nhập cho từ điển tài nguyên (chủ đề Aero) trong App.xaml như được liệt kê trong mã ở trên không?
Tôi biết câu hỏi của mình hơi mơ hồ, nhưng hãy tin tôi, tôi thực sự nhầm lẫn với các chủ đề mặc định của wpf trên các phiên bản Windows khác nhau.
EDIT: Tôi vẫn không thể tạo combobox theo phong cách theo nhu cầu của mình. Hộp tổ hợp vẫn xuất hiện như một hình chữ nhật màu xám.
Đây là những gì tôi đã làm. Tôi đã tải xuống Aero.NormalColor.xaml từ trang web của microsoft và được đưa vào thư mục chủ đề của ứng dụng. Sau đó, tôi đã thêm thông tin sau vào trong App.xaml
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes/Aero.NormalColor.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Sau đó, tôi đã biên dịch ứng dụng và triển khai trên Windows 8. Vẫn như một combobox như được hiển thị trước đó. Lưu ý rằng tất cả các yếu tố khác được tạo kiểu theo đúng chủ đề. Tôi đã làm tương tự với Luna.Metallic.xaml và mọi phần tử được tạo kiểu ngoại trừ ComboBox.
Tôi tin rằng khi tôi tải một chủ đề cụ thể, xác định kiểu với ControlTemplate, thì nó phải được chọn bởi wpf. Tôi bối rối là tại sao chỉ có ComboBox ngay cả sau khi cho nó một Aero (hoặc Luna) Mẫu kiểm soát không thay đổi sự xuất hiện của nó. Ý tưởng nào?
EDIT-2 Screen shot xuất hiện combobox trên Windows 8
Tôi đã cập nhật câu trả lời cho chỉnh sửa của mình. Vui lòng thêm nhận xét trong các câu trả lời có liên quan hoặc câu hỏi của bạn. Nó không phải là rất dễ dàng để theo dõi khi bạn đưa ra nhận xét về câu trả lời mà không liên quan đến những gì bạn nêu rõ – Viv