当我尝试这段代码时:
foreach (Control ctrl in Grid1.Children)
{
ctrl.Visibility = System.Windows.Visibility.Hidden;
}
甚至是这个,这是我真正想要做的事情:
foreach (WebBrowser wb in Grid1.Children)
{
wb.Visibility = System.Windows.Visibility.Hidden;
}
并且它给了我一个例外:无法转换类型为' System.Windows.Controls.WebBrowser'键入' System.Windows.Controls.Control'。有什么想法吗?
答案 0 :(得分:1)
简短的回答是在你对它进行任何操作之前检查每个控件是否为WebBrowser
:
foreach (var ctrl in Grid1.Children)
{
if (ctrl is WebBrowser)
((WebBrowser)ctrl).Visibility = System.Windows.Visibility.Hidden;
}
但是,您尝试使用WPF,就好像它是Windows窗体一样。它不像Windows Forms,所以你应该接受它并尝试以WPF方式做事。因此,更长的答案是正确使用WPF,并使用bool
将数据绑定到WebBrowser.Visibility
属性的数据。在这种情况下,您可以通过在视图模型或代码中设置单个属性来隐藏它们:
BooleanToVisibilityConverter
你可以在网上找到很多这样的例子,甚至可以在这个网站上找到。如果你使用WPF方式,你会发现WPF更容易使用。
答案 1 :(得分:0)
您正在寻找的是' OfType':
foreach (WebBrowser wb in grid1.Children.OfType<WebBrowser>())
wb.Visibility = System.Windows.Visibility.Hidden;