tklustig
tklustig

Reputation: 503

How to put all properties of Ellipse in generic Datatype of WPF Application

I implemented following List:

private List<Ellipse> ellipsen = new List<Ellipse>();

My intention is to put all properties of Ellipses, which are implemented like this:

<Window x:Class="Halma.MainWindow"
        WindowStyle="ToolWindow"
        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:Halma"
        xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
        mc:Ignorable="d"
        Title="Halma" Height="900" Width="1200">
    <DockPanel LastChildFill="True">
        <DockPanel DockPanel.Dock="TOP" LastChildFill="True">
            <Button DockPanel.Dock="Left" FontSize="14" Margin="3" Width="100" Click="Button_Click_0">Beenden</Button>
            <TextBlock FontSize="20" VerticalAlignment="Center" Text="Koordinaten" x:Name="TextBlock_Status_1" Canvas.Left="2" Canvas.Top="473" Height="58" Width="592"/>
            <TextBlock FontSize="14" VerticalAlignment="Center" Text="Spielstein" x:Name="TextBlock_Status_2" Canvas.Left="2" Canvas.Top="473" Height="30" Width="592"/>
        </DockPanel>
        <Canvas>
            <i:Interaction.Behaviors>
                <local:Brett/>
            </i:Interaction.Behaviors>
        </Canvas>
        <Canvas Name="Halma">
            <Canvas.Children>
                <Ellipse x:Name="R0C0" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="385" Canvas.Top="80" />
            <Ellipse x:Name="R0C1" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="385" Canvas.Top="135" />
            <Ellipse x:Name="R0C2" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="385" Canvas.Top="195" />
            <Ellipse x:Name="R0C3" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="385" Canvas.Top="255" />
            <Ellipse x:Name="R0C4" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="385" Canvas.Top="305" />
            <Ellipse x:Name="R0C5" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="435" Canvas.Top="110" />
            <Ellipse x:Name="R0C6" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="435" Canvas.Top="165" />
            <Ellipse x:Name="R0C7" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="435" Canvas.Top="225" />
            <Ellipse x:Name="R0C8" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="435" Canvas.Top="280" />
            <Ellipse x:Name="R0C9" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="485" Canvas.Top="140" />
            <Ellipse x:Name="R0C10" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="485" Canvas.Top="200" />
            <Ellipse x:Name="R0C11" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="485" Canvas.Top="255" />
            <Ellipse x:Name="R0C12" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="535" Canvas.Top="170" />
            <Ellipse x:Name="R0C13" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="535" Canvas.Top="220" />
            <Ellipse x:Name="R0C14" Stroke="Black" StrokeThickness="2" Fill="Violet"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="585" Canvas.Top="195" />

            <Ellipse x:Name="L0C0" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="585" Canvas.Top="655" />
            <Ellipse x:Name="L0C1" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="635" Canvas.Top="625" />
            <Ellipse x:Name="L0C2" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="685" Canvas.Top="595" />
            <Ellipse x:Name="L0C3" Stroke="Brown" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="735" Canvas.Top="565" />
            <Ellipse x:Name="L0C14" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="735" Canvas.Top="630" />
            <Ellipse x:Name="L0C7" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="735" Canvas.Top="695" />
            <Ellipse x:Name="L0C4" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="785" Canvas.Top="535" />
            <Ellipse x:Name="L0C5" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="635" Canvas.Top="685" />
            <Ellipse x:Name="L0C6" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="685" Canvas.Top="655" />
            <Ellipse x:Name="L0C8" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="785" Canvas.Top="595" />
            <Ellipse x:Name="L0C9" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="685" Canvas.Top="715" />
            <Ellipse x:Name="L0c10" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="740" Canvas.Top="745" />
            <Ellipse x:Name="L0C11" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="785" Canvas.Top="770" />
            <Ellipse x:Name="L0C12" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="785" Canvas.Top="715" />
            <Ellipse x:Name="L0C13" Stroke="Black" StrokeThickness="2" Fill="Yellow"  MouseDown="Ellipse_MouseDown" MouseMove="rect_MouseMove" MouseLeftButtonDown="rect_MouseLeftButtonDown" MouseLeftButtonUp="rect_MouseLeftButtonUp" Height="30" Width="30" Canvas.Left="785" Canvas.Top="660" />
            </Canvas.Children>
        </Canvas>
    </DockPanel>
</Window>

by constructor in upper List.I try like this, but I fail with it. I will get error, that Canvas is no public Instancedefinition for GetEnumerator. Any ideas, how to get my intention achieved?

    foreach(Ellipse el in Halma){
       ellipsen.Add(el);
    }

Rephrasing Following code will throw out error:"Object reference not set to an instance of an object. "

 foreach (Ellipse el in Halma.Children){
     ellipsen.Add(el);
 }

Upvotes: 0

Views: 61

Answers (2)

mm8
mm8

Reputation: 169190

Try this:

public partial class MainWindow : Window
{
    private readonly List<Ellipse> ellipsen = new List<Ellipse>();
    public MainWindow()
    {
        InitializeComponent();
        foreach (Ellipse el in Halma.Children.OfType<Ellipse>())
        {
            ellipsen.Add(el);
        }
    }
}

Upvotes: 1

ManDani
ManDani

Reputation: 202

To iterate over a canvas you have to use its children property.

foreach (Ellipse el in Halma.Children)
{
    ellipsen.Add(el);
}

Upvotes: 0

Related Questions