我已经构建了一个 WPF 用户控件,其中包含一个带有自定义弹出窗口的 ComboBox,其中包含一个用户控件内部控件(弹出窗口中的那个)具有一些我想在主用户控件中公开的属性,以便主机页面可以读取并写入内部控件。
我在做这件事时遇到了麻烦,是我做错了什么还是我做错了什么?
问候克里斯蒂安·安徒生
我已经构建了一个 WPF 用户控件,其中包含一个带有自定义弹出窗口的 ComboBox,其中包含一个用户控件内部控件(弹出窗口中的那个)具有一些我想在主用户控件中公开的属性,以便主机页面可以读取并写入内部控件。
我在做这件事时遇到了麻烦,是我做错了什么还是我做错了什么?
问候克里斯蒂安·安徒生
你可以尝试使用它来暴露它
public static IEnumerable<T> FindVisualChildren<T>(this DependencyObject depObj) where T : DependencyObject
{
if (depObj == null) yield break;
for (var i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
var child = VisualTreeHelper.GetChild(depObj, i);
var children = child as T;
if (children != null)
{
yield return children;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
我如何使用它
var uc = (TabItem)sender;
foreach (TextBlock textBlock in uc.FindVisualChildren<TextBlock>())
{
textBlock.Foreground = Brushes.WhiteSmoke;
}