hãy tưởng tượng một ứng dụng wpf nơi tôi có thể thay đổi chủ đề động. Tôi làm điều này bằng cách hoán đổi ResourceDictionaries ở cấp Tài nguyên ứng dụng. Những người có nguồn gốc chủ đề có những phong cách ngầm định nghĩa cho TextBox và những thứ tương tự.Đặt kiểu ẩn cục bộ khác với kiểu chủ đề/thay thế thành BasedOn DynamicResource
Bây giờ tôi có một phần trong ứng dụng của tôi, nơi hộp văn bản nên có phong cách cụ thể này "NonDefaultTextBoxStyle" và không phải là ứng dụng tiềm ẩn rộng.
Tôi rất thích để làm điều này (sử dụng DynamicResource vì chủ đề có thể được thay đổi trong thời gian chạy):
<StackPanel>
<StackPanel.Resources>
<Style TargetType="TextBox" BasedOn="{DynamicResource NonDefaultTextBoxStyle}"/>
</StackPanel.Resources>
<TextBox .../>
<TextBox .../>
<TextBox .../>
</StackPanel>
thay vì phải làm điều này:
<StackPanel>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
<TextBox Style="{DynamicResource NonDefaultTextBoxStyle}" .../>
</StackPanel>
Bây giờ để đơn giản hóa này, tôi đã có ý tưởng về việc thiết lập một thuộc tính được thừa kế có thể thừa kế trên StackPanel, nó sẽ thiết lập một kiểu được chỉ định trên mỗi hộp văn bản con cháu.
Đây có phải là một ý tưởng hay không? Có cách nào đơn giản hơn không? Tui bỏ lỡ điều gì vậy?
này khá nhiều boils xuống: một thay thế cho Basedon = "{DynamicResource ...} trong một phong cách là gì
Tôi chỉ có thể khuyên bạn nên đọc các câu hỏi! Bạn không giải quyết được vấn đề của tôi! –
@ MarkusHütter Ah Tôi thấy câu hỏi của bạn ngay bây giờ. Hmm cũng tiếp tục với câu trả lời của tôi, bạn sẽ có thể thay đổi Thuộc tính Depenedencies đính kèm trong giải pháp của tôi thành 'FrameworkPropertyMetadataOptions.Inherits' (sử dụng http://msdn.microsoft.com/en-us/library/ms557296.aspx này thay vì' UIPropertyMetadata') và sau đó kiểm tra các loại phần tử 'StylesChanged' chức năng. Thuộc tính đính kèm sau đó sẽ chỉ cần được viết một lần trên phần tử StackPanel. – NtscCobalt
vì vậy bạn có ý nghĩa như những gì tôi đã đề xuất trong câu hỏi ... –