2016-12-16 1 views
-5

У меня есть несколько изображений в окне, как я могу их обвести вокруг, чтобы установить изображение на cover.jpg?Foreach loop через Image Controls в окне WPF

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

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

Где вы храните свои изображения? Что такое «сетка»? Это контроль? – FCin

+0

Что вы пробовали? есть ли у вас исключения? или что-то уже работающее, но не правильно? btw, посмотрите здесь: http://stackoverflow.com/help/how-to-ask – gobes

+0

yep его управление в приложении WPF – Jazab

ответ

0

Я бы посоветовал не делать этого в коде позади, а вместо этого использовать принципы MVVM и использовать GridView/ListView с привязкой ItemSource к ImagesList (вам нужно сделать это ObservableCollection вместо списка). Если вам нужно больше данных, инкапсулируйте изображение в класс, содержащий требуемые дополнительные данные. Таким образом, вам не нужно зацикливаться, и все происходит «на собственном»

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 ... /> 
.... 
0

Код За code behind Desginer designer насколько са я понял, это то, что вам нужно просто изменить место жесткого кодирования в вашу бухту r.jpg.

+0

loop show no error, но получить false и выйти. – Jazab

+0

Его сделано. Спасибо за ваше предложение. – Jazab