[英]Find unfrozen brushes in wpf project
我試圖弄清楚如何在Applications資源中找到所有不是Freeze="true"
Brush對象。
到目前為止,我所做的是:
var temp = this.FindLogicalChildren<Brush>();
var resourceDictionary = Application.Current.Resources;
var resources = GetResources(resourceDictionary);
var brushes = resources.Cast<DictionaryEntry>()
.Where(e => e.Value is Brush).Where(e => !(e.Value as Brush)?.IsFrozen ?? false);
foreach (var entry in brushes)
....
但是,這種方法不能滿足標准。 知道我在這里想念什么嗎?
因此,我發現這個緩存的網站似乎可以提供答案:
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj)
where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}
foreach (Freezable item in FindVisualChildren<Freezable>(myWin))
if( item != null && item.CanFreeze)item.Freeze();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.