动态数据模板DataTemplate 中子控件属性的方法
今天遇到一个问题,想动态更改Listbox 中 item的字体大小。效果如下图:
1> 尝试方法1 (失败)
尝试对当前已绑定 DataTemplate的样式重新读取后,进行修改 再重新绑定。
通过以下方法,也找到了 Label 并对 Fontsize 进行了重新赋值,但最终不起作用,仍旧是原始的尺寸。很不解???
public T FindFirstVisualChild2<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 = FindFirstVisualChild2<T>(child, childName);
if (childOfChild != null)
{
return childOfChild;
}
}
}
return null;
}
2> 通过对DataTemplate 中 Label 控件FontSize 增加 Binding,然后再 Converter中读取动态属性,从而实现动态设置FontSize;
【已实施,可行】
3> 通过在后台将定义 DataTemplte 转为xaml string,然后 对fontsize动态赋值,重新组装xaml,再绑定ListBox
【未实施,按理可行】