我在Window.Resources上有幾種樣式,我應用於多個C#按鈕。然後我需要改變風格,但首先我需要知道什麼是應用於按鈕的當前風格,我想改變風格。 我找不到從按鈕中獲取樣式名稱的方法!獲取按鈕樣式名稱
Q
獲取按鈕樣式名稱
1
A
回答
0
這是一個很好的問題(+1)。
這只是我的想法,可能不是很準確。我懷疑爲UI控件獲取樣式是否合理。假設你將風格「style1」應用到UI控件,然後你可以設置單獨的屬性,如前景/背景....現在,什麼樣的風格?
如果您想維護/追蹤按鈕的狀態,那麼應該將其作爲視覺狀態或在您的代碼後面(ViewModel/Model)處理。
0
請參見:Style
public void FooFunc()
{
Button myButton = ...;
Console.WriteLine("The Style: {0}", myButton.Style);
}
我認爲這是你在找什麼?
1
你試過Button.Style
房產嗎?如果使用資源Key
完成樣式的explcit設置,那麼您應該使用Button.Style
propetry獲取按鈕的當前樣式,否則在控制級別收集所有Style
相關信息會有點棘手。
並且有這個原因。樣式是繼承的,可以在不同的元素範圍(如App,Window,UserControl,Ancestor UIElements以及最終的單個控件)上重寫。因此,當您訪問Button.Style
屬性時,您會得到一種適用於Button
的最後直接樣式。如果款式是BasedOn
另一種Style
那麼Style.BasedOn
會給你父母/基地Style
。再次,如果BasedOn
風格是從另一個Style
派生的,我們將得到如Style.basedOn.BasedOn
...等
我希望這是有道理的。 :-)
1
如果你用這種方式處理你的問題,我認爲你在設計/架構方面犯了錯誤。如果您需要有條件地更改樣式,則可以使用data-binding和templating基於包含相關信息的對象創建UI元素。
0
感謝您的回答,我從另一個stackoverflow使用此功能..它的作品,並返回樣式名稱爲一個字符串!
static public string FindNameFromResource(ResourceDictionary dictionary, object resourceItem)
static public string FindNameFromResource(ResourceDictionary dictionary, object resourceItem)
{
foreach (object key in dictionary.Keys)
{
if (dictionary[key] == resourceItem)
{
return key.ToString();
}
}
return null;
}
相關問題
- 1. tkinter - 獲取按鈕名稱?
- 2. 從提交按鈕獲取名稱php
- 3. 獲取按鈕變量的名稱
- 4. Javascript,獲取點擊按鈕的名稱
- 5. POI Excel:獲取樣式名稱
- 6. 按名稱獲取
- 7. 按名稱獲取
- 8. 按名稱獲取
- 9. 獲取按鈕名稱字符串格式
- 10. 使用DOM元素獲取原始樣式名稱。樣式
- 11. 按名稱獲取表格
- 12. @Bean不按名稱獲取
- 13. SpreadsheetGear按名稱獲取列?
- 14. 按名稱獲取資源
- 15. 按名稱獲取EventHandler?
- 16. Firefox不按名稱獲取
- 17. 按名稱獲取類型
- 18. 按名稱獲取形狀
- 19. PHP,按名稱獲取按鈕,其中包含腳本
- 20. jquery按名稱動態獲取單選按鈕列表
- 21. NodeJs/Express獲取ID //按下提交按鈕的名稱
- 22. 按鈕樣式
- 23. 如何獲取/提取提交按鈕的名稱值?
- 24. 按學生名稱獲取列名
- 25. 獲得點擊按鈕的名稱
- 26. 形式不張貼按鈕名稱/值
- 27. 從文件中讀取按鈕名稱
- 28. 使用for循環設置提交按鈕名稱後從POST獲取名稱
- 29. WPF按鈕樣式
- 30. 樣式和按鈕
嘗試一個:http://stackoverflow.com/questions/538750/can-i-get-the-key-of-a-style-in-code-behind-wpf –