Foreach遍历WPF窗口上的图像控件

时间:2016-12-16 11:09:23

标签: c# wpf

我在窗口上有一些图像,如何将它们全部环绕以将图像设置为cover.jpg

public partial class MainWindow : Window
{
    int score;
    List<int> lst = new List<int>();

    public MainWindow()
    {
        InitializeComponent();
        foreach(Image img in Grid.)
    }        
}

3 个答案:

答案 0 :(得分:0)

检查以下问题。

WPF: How do I loop through the all controls in a window?

你应该能够这样做:

public MainWindow()
{
 InitializeComponent();

 IEnumerable<Image> images = GetChildren(Grid).OfType<Image>();
 if (images != null)
 {
    BitmapImage bi = new BitmapImage(new Uri("pic.png", UriKind.Relative));
    foreach (Image image in images)
    {
        image.Source = bi;
    }
  }
}

public static IEnumerable<Visual> GetChildren(Visual parent, bool recurse = true)
{
  if (parent != null)
  {
      int count = VisualTreeHelper.GetChildrenCount(parent);
      for (int i = 0; i < count; i++)
      {
         // Retrieve child visual at specified index value.
        var child = VisualTreeHelper.GetChild(parent, i) as Visual;

        if (child != null)
        {
            yield return child;

            if (recurse)
            {
                foreach (var grandChild in GetChildren(child, true))
                {
                    yield return grandChild;
                }
            }
          }
       }
    }
  }
  <Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApplication1"
    mc:Ignorable="d"
    Title="MainWindow" Height="300" Width="300">
<Grid x:Name="Grid">
 <Image ... />
....

答案 1 :(得分:0)

代码背后 code behind Desginer designer 据我所知,这就是你需要的,只需将硬编码的位置更改为cover.jpg。

答案 2 :(得分:0)

我建议不要在后面的代码中执行此操作,而是使用MVVM原则并使用GridView / ListView,并将ItemSource绑定到ImagesList(您必须使其成为ObservableCollection而不是列表)。如果需要更多数据,请将图像封装在包含所需附加数据的类中。 通过这种方式,您不需要循环,并且所有事情都会发生在#34;它自己的&#34;