public T FindVisualChild<T>(DependencyObject obj, string childName) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is T && child.GetValue(NameProperty).ToString() == childName)
{
return (T)child;
}
else
{
T childOfChild = FindVisualChild<T>(child, childName);
if (childOfChild != null)
{
return childOfChild;
}
}
}
return null;
}
var textblock = FindVisualChild<TextBlock>(this, "abc");
string key = "resource-key-name";
textblock.SetResourceReference(TextBlock.TextProperty, key);
<DataTemplate>
<Border Background="{DynamicResource xxx}">
<TextBlock Margin="20,0,0,0" x:Name="abc"
VerticalAlignment="Center"
FontSize="{DynamicResource FontSize5}"/>
</Border>
</DataTemplate>
WPF 获得DataTemplate中的控件 - 爱码网 (likecs.com)
wpf - How to create a textblock and bind a text resource to it in behind code? - Stack Overflow