0

Создал Usercontrol, вывожу его на холст по нажатию на картинку, вопрос заключается в том, как обратиться к этому Usecontrol (чтобы он "реагировал" на нажатии по нему мышкой). Если точнее, что прописать в DataTempate?

private void Image_MouseDown(object sender, MouseButtonEventArgs e)
  {
     var img = sender as Image;
     var url = ((sender as Image).DataContext as Element).DisplayedImageShortUrl;
     if (e.LeftButton == MouseButtonState.Pressed && url == "resistor.png")
     {
        resistor_UC rs = new resistor_UC();

        ic_canvas.ItemsSource = new[] { rs };
     }
     if (e.LeftButton == MouseButtonState.Pressed && url == "battary.png")
     {
        battary_UC btr = new battary_UC();
        ic_canvas.ItemsSource = new[] { btr };
     }
     if (e.LeftButton == MouseButtonState.Pressed && url == "key.png")
     {
        key_UC ky = new key_UC();
        ic_canvas.ItemsSource = new[] { ky };
     }
     if (e.LeftButton == MouseButtonState.Pressed && url == "lamp.png")
     {
        lamp_UC lp = new lamp_UC();
        ic_canvas.ItemsSource = new[] { lp };
     }


  }

Xaml:

<ItemsControl x:Name="ic_canvas" Grid.Column="1">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>

            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

Мысль в том, чтобы сделать на подобии:

<ItemsControl x:Name="ic_menu" Grid.Column="0" Margin="10,57,10,10">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border BorderThickness="1" BorderBrush="Black">
                    <Image Source="{Binding img}"  Margin="10" Width="100" Height="50" MouseDown="Image_MouseDown"/>
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
0xdb
  • 51,614
nickolz
  • 47
  • Ничего не понятно. Почему вы используете ItemsControl с одним элементом? Выводите элемент сразу на Canvas – Андрей NOP Apr 19 '18 at 13:12
  • Или это, если у вас MVVM: https://ru.stackoverflow.com/a/508647/10105 – VladD Apr 19 '18 at 13:36
  • @АндрейNOP ну то есть у меня мысль такая, в этом Itemcontrol сделать на подобии, см.отредактированный вопрос – nickolz Apr 19 '18 at 15:29

0 Answers0