【问题标题】:Get ContentControl Children获取 ContentControl 子项
【发布时间】:2018-01-19 08:55:53
【问题描述】:

如何遍历 ContentControls 中的图像?

<Canvas x:Name="canvas" >

    <ContentControl Style="{StaticResource DesignerItemStyle}">
        <Image IsHitTestVisible="True" Source="Media/cross.png"   />
    </ContentControl>

    <ContentControl Style="{StaticResource DesignerItemStyle}">
        <Image IsHitTestVisible="True" Source="Media/cross.png"   />
    </ContentControl>

</Canvas>

我的尝试不起作用:

var ccs = canvas.Children;
foreach (ContentControl c in ccs)
{
   for (int i = 0; i < VisualTreeHelper.GetChildrenCount(c); i++)
   {
     var child = VisualTreeHelper.GetChild(c, i);
   }
}

【问题讨论】:

  • 正确的做法是将Canvas更改为ItemsControl,将ItemsPanel设置为Canvas,将您的PNG封装为视图模型,并为视图模型为ContentControlImage。那么你的问题就不是枚举ControlControl.Image属性,而是你应该可以访问的视图模型集合。
  • 就您提出的问题而言,上面写满了XY Problem,并且缺少有关您的尝试无效的原因以及具体的详细信息i> 你无法弄清楚。尤其是知道为什么您认为需要以这种方式访问​​ Image 元素,这将有助于其他人回答您的实际问题,而不是您在上面发布的问题。

标签: c# wpf image contentcontrol


【解决方案1】:

使用 LINQ:

var images = canvas.Children
    .OfType<ContentControl>()
    .Select(cc => cc.Content as Image)
    .Where(img => img != null);

请注意,设置IsHitTestVisible="True" 是多余的。 True 是默认值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2015-02-02
    相关资源
    最近更新 更多