在我的WPF用戶控件中,如果用戶有一個黑色的主題,那麼所有默認爲黑色的文本都將很難閱讀。什麼是使用VS當前顏色的正確方法。開發獲取當前forecolor的Visual Studio擴展
1
A
回答
0
您可以通過編寫自己的Visual Studio風格畫筆並與控件合併以兩種方式進行操作。
另一種方法是,您可以從Windows註冊表中選擇VS主題的資源。在使用Utility類從Windows註冊表中選擇當前主題之前很久。
public enum VsTheme
{
Unknown = 0,
Light,
Dark,
Blue
}
public class ThemeUtil
{
private static readonly IDictionary<string, VsTheme> Themes = new Dictionary<string, VsTheme>()
{
{ "de3dbbcd-f642-433c-8353-8f1df4370aba", VsTheme.Light },
{ "1ded0138-47ce-435e-84ef-9ec1f439b749", VsTheme.Dark },
{ "a4d6a176-b948-4b29-8c66-53c97a1ed7d0", VsTheme.Blue }
};
public static VsTheme GetCurrentTheme()
{
string themeId = GetThemeId();
if (string.IsNullOrWhiteSpace(themeId) == false)
{
VsTheme theme;
if (Themes.TryGetValue(themeId, out theme))
{
return theme;
}
}
return VsTheme.Unknown;
}
public static string GetThemeId()
{
const string CategoryName = "General";
const string ThemePropertyName = "CurrentTheme";
string keyName = string.Format(@"Software\Microsoft\VisualStudio\11.0\{0}", CategoryName);
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName))
{
if (key != null)
{
return (string)key.GetValue(ThemePropertyName, string.Empty);
}
}
return null;
}
}
我發現了另一種方式來做到這一點。我可以直接使用xaml中的visual studio主題顏色資源。對於這些,您需要有Microsoft.VisualStudio.Shell.12.0。(對於VS2013)它是VisualStudio版本的resdistributable組件。一旦你通過你的項目添加你可以直接訪問所有畫筆作爲XAML本身的關鍵。例
Background="{DynamicResource {x:Static vsfx:VsBrushes.EnvironmentBackgroundGradientKey}}"
命名空間必須添加作爲
xmlns:vsfx="clr-namespace:Microsoft.VisualStudio.Shell;assembly=Microsoft.VisualStudio.Shell.12.0"
您可以從下面的MSDN鏈接
https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.vsbrushes(v=vs.120).aspx
指所有刷子如果你要檢測的主題改變事件本身,你可以利用VSColorTheme.ThemeChanged事件
相關問題
- 1. Visual Studio擴展程序獲取開發人員輸入
- 2. 爲Visual Studio Marketplace開發付費擴展
- 3. 我想開發一個Visual Studio擴展,就像TypeScript擴展
- 4. 如何在cpp中爲擴展項目獲取當前版本的Visual Studio?
- 5. 如何從Visual Studio擴展中獲取當前正在運行的項目
- 6. 在Visual Studio文本編輯器擴展中獲取當前源文件方法
- 7. 擴展程序獲取當前打開的應用程序
- 8. 從Visual Studio擴展訪問當前的Microsoft帳戶
- 9. 與Visual Studio擴展
- 10. 代碼擴展的Visual Studio 2010擴展
- 11. 開源Visual Studio擴展列表?
- 12. 在Chrome擴展開發中獲取當前的瀏覽器html內容?
- 13. 新的C#開發人員有用的Visual Studio擴展?
- 14. PathTooLongException的Visual Studio擴展
- 15. 的Visual Studio QueryFirst擴展
- 16. Visual Studio的Git擴展
- 17. Visual Studio擴展開發:如何引用掛起更改窗口
- 18. 當擴展程序打開時,從Chrome中的當前選項卡獲取URL?
- 19. 的Visual Studio擴展獲取項目路徑
- 20. 獲取Visual Studio 2010擴展中的項目/引用列表
- 21. 如何獲取Visual Studio代碼擴展中的鍵綁定?
- 22. 擴展爲Specflow在Visual Studio
- 23. 擴展Visual Studio編輯器
- 24. 擴展Visual Studio 2010 C#Intellisense?
- 25. Visual Studio 2012擴展問題
- 26. 擴展Excel UI Visual Studio 2015
- 27. Visual Studio擴展安裝
- 28. Visual Studio擴展錯誤?
- 29. Visual Studio 2010:擴展/差異
- 30. Visual Studio命令行擴展
ShineKing,這是返回CurrentTheme。你能告訴我如何在Xaml中使用它,例如,如何根據它來設置標籤的顏色。 – Mohsen
Mohsen,我找到了另一種方式將VS直接刷到xaml。當然,它的作品適合你。請看我編輯的代碼 – ReeganLourduraj
Hi ShineKing,我想我仍然失去了一些東西。它仍然不起作用。你介意在哪裏分享你的解決方案。 – Mohsen