Tôi viết một ứng dụng WPF trên WinXP và tôi đã ghi đè các theme mặc định với chủ đề vista như thế này:Override ghi đè WPF Theme
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var themerd = new ResourceDictionary();
themerd.Source = new Uri(@"PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component\themes/aero.normalcolor.xaml", UriKind.Relative);
Resources.MergedDictionaries.Add(themerd);
}
Và nó hoạt động tốt chủ yếu. Khi tôi sử dụng kiểm soát như một nút:
<Button />
Phong cách có vẻ tốt đẹp, nhưng nếu tôi sử dụng một nút với một phong cách khác nhau như thế này:
<Button>
<Button.Style>
<Style TargetType="Button">
<Setter Property="Width" Value="80" />
</Style>
</Button.Style>
</Button>
Phong cách sẽ ghi đè lên phong cách chủ đề cụ thể với phong cách WinXP tiêu chuẩn thay vì xây dựng trên đầu trang của nó. Điều này cực kỳ hạn chế đối với tôi. Có cách nào để tránh vấn đề này không?
Cảm ơn, câu trả lời của bạn thực sự hữu ích. Khu vực này có vẻ thiếu WPF. Bạn thường sử dụng tùy chọn nào để giải quyết vấn đề này? –
Tùy chọn 2 rất thú vị, ở một mức độ nào đó, nó thậm chí còn xoay quanh vấn đề không được dựa trên BasedOn DynamicResources. –
Tôi thường giải quyết vấn đề bằng cách giải thích cho khách hàng rằng tốt nhất là nên gắn bó với chủ đề OS hiện tại vì các cửa sổ sẽ trông "bình thường" đối với người dùng cuối. Tuy nhiên tôi đã sử dụng cả hai lựa chọn 2 và lựa chọn 3 trong các tình huống mà tôi cần một phần của giao diện người dùng được thiết kế lại nhưng một phần bên trong của giao diện người dùng (chẳng hạn như một cửa sổ bật lên) để * không * được thiết kế lại. –