2010-08-25 38 views
17

Có cách nào để thiết lập kiểu toàn cầu cho ứng dụng WPF của tôi không?WPF - Phong cách toàn cầu?

Điều tôi hy vọng làm là áp dụng kiểu cho tất cả các nút của tôi cũng có con Image.

Trả lời

23

Vâng, sắp xếp - đó là phương pháp tiếp cận tất cả những gì bạn có thể làm - đặt phần tử sau vào App.xaml của bạn - tất cả các nút của bạn sẽ thay đổi (ngoại trừ các nút bạn áp dụng theo cách thủ công).

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="LightPink"/> <!-- You should notice that one... --> 
</Style> 

Tuy nhiên, nếu bạn muốn đánh chỉ nút với hình ảnh - bạn phải kế thừa từ Nút mọi lúc bạn làm và sau đó áp dụng một phong cách như thế này:

public class CustomImageButton:Button{} 
<Style TargetType="{x:Type local:CustomImageButton}"> 
    <Setter Property="Background" Value="LimeGreen"/> 
</Style> 
<local:CustomImageButton Content="ClickMe"/> 

Đó là một rất hạt thô phong cách toàn cầu - và bạn cần phải tuân theo quy ước để làm cho nó hoạt động.

Cách khác là sử dụng Chủ đề - đọc thêm về điều đó here.

+2

Thật không may là liên kết đến Chủ đề đã chết. [Ở đây] (http://blogs.msdn.com/b/wpfsdk/archive/2007/07/31/using-themes-with-custom-controls.aspx) là một liên kết đến một bài viết từ MSDN về cách sử dụng các chủ đề có thể tương tự. –

5

Bạn có thể làm phong cách tiềm ẩn trong WPF được áp dụng theo loại

ví dụ

<Style TargetType="Button"> 

sẽ được áp dụng cho tất cả các nút trong phạm vi của phong cách đó (Nếu phong cách là trong App. XAML nó sẽ áp dụng cho tất cả các nút, nếu nó thấp hơn trong chuỗi nó sẽ áp dụng cho tất cả các nút bên dưới nó)

Nếu bạn muốn áp dụng nó cho một số loại nút nhất định (nói imagebuttons) tạo kiểu (gọi nó là ImageButton) và sau đó tạo ra Tyle nhắm mục tiêu đến loại đó.

+0

OK ... loại tác phẩm này. Một trong các nút của tôi dường như tôn trọng sự thay đổi này, nhưng các nút khác thì không. Tất cả chúng đều hoạt động nếu tôi cung cấp kiểu 'x: Key' và sau đó gọi nó một cách rõ ràng từ mỗi nút bằng cách sử dụng' Style = "{StaticResource DisabledButton}" '. Bất kỳ cách nào tôi có thể tránh phải thêm một tham chiếu rõ ràng cho mỗi nút? –

+0

Đảm bảo từ điển tài nguyên mà kiểu này được xác định nằm trong phạm vi cho tất cả các nút mà bạn cần phải áp dụng kiểu. Đặt kiểu này trong App.xaml sẽ hiển thị cho tất cả các nút trong ứng dụng. Di chuyển thấp hơn sẽ hạn chế khả năng hiển thị của nó. –

2

Đặt kiểu vào thẻ ResourceDictionary bên trong App.xaml của bạn và nó sẽ áp dụng cho toàn bộ ứng dụng.

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