Mar*_*eIV 15 wpf invalidoperationexception contenttemplateselector
好的...这让我很难过.我在UserControl中覆盖了OnContentTemplateChanged.我正在检查传入newContentTemplate的值实际上是否等于this.ContentTemplate(它确实)当我调用它时...
var textBox = this.ContentTemplate.FindName("EditTextBox", this);
Run Code Online (Sandbox Code Playgroud)
...它抛出以下异常......
"此操作仅对应用此模板的元素有效."
根据另一个相关问题的评论者,他说你应该传入内容主持人来控制,而不是控件本身,所以我试过这个......
var cp = FindVisualChild<ContentPresenter>(this);
var textBox = this.ContentTemplate.FindName("EditTextBox", cp);
Run Code Online (Sandbox Code Playgroud)
其中FindVisualChild只是MSDN示例中使用的辅助函数(见下文),用于查找关联的内容演示者.找到"cp"时,它也会抛出同样的错误.我很难过!
这是辅助函数供参考......
private childItem FindVisualChild<childItem>(DependencyObject obj)
where childItem : DependencyObject
{
for(int i = 0 ; i < VisualTreeHelper.GetChildrenCount(obj) ; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if(child != null && child is childItem)
return (childItem)child;
else
{
childItem childOfChild = FindVisualChild<childItem>(child);
if(childOfChild != null)
return childOfChild;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
中号
Mik*_*chs 12
在调用FindName方法之前显式应用模板将防止此错误.
this.ApplyTemplate();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8295 次 |
| 最近记录: |