[英]WPF get all Controls “Content”
How would check, if a WPF control has a Content-Variable? 如果WPF控件具有Content-Variable,将如何检查?
I'm iterating through all of the controls using this Code: 我正在使用此代码遍历所有控件:
public void Translate(Visual myVisual)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
//How can I check wether childVisual has a Content-Variable or hasn't?
//So check if this: childVisual.Content is existing
// Enumerate children of the child visual object.
Translate(childVisual);
}
}
You propably coud do the following for every Control-Type: 您可能会为每个Control-Type进行以下操作:
if(visualChild is CheckBox)
//cast it to CheckBox etc.
But that's dirty, is there any other possibility? 但这很脏,还有其他可能性吗?
The easiest way would be to check if your Visual
is a ContentControl
. 最简单的方法是检查
Visual
是否为ContentControl
。 Generally, all WPF controls that have a Content
property derive from ContentControl
. 通常,所有具有
Content
属性的WPF控件都从ContentControl
派生。
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
//How can I check whether childVisual has a Content-Variable or hasn't?
var childContentVisual = childVisual as ContentControl;
if(childContentVisual != null)
{
var content = childContentVisual.Content;
...
}
// Enumerate children of the child visual object.
Translate(childVisual);
}
You could also use reflection to see if a Content property exists, but that's slower and more cumbersome. 您还可以使用反射来查看Content属性是否存在,但这比较慢且麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.