1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
| <UserControl x:Class="WpfDragDropGrille.Views.ControlGrille"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:data="clr-namespace:WpfDragDropGrille.Data"
xmlns:vm="clr-namespace:WpfDragDropGrille.ViewModel"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:views="clr-namespace:WpfDragDropGrille.Views"
xmlns:converters="clr-namespace:WpfDragDropGrille.Converters"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
>
<UserControl.DataContext>
<vm:ListDataItemVM/>
</UserControl.DataContext>
<UserControl.Resources>
<converters:ImageToUriConverter x:Key="cnv"/>
<!--un bouton au lieu d'un control Image qui n'implemente as ICommand -->
<!-- sa prop Command est "bindé" à DataContext de l'ancetre c.à.d le VM -->
<!-- le 2 eme DataContext du Parameter vise la prop UriPhoto
attention au DataContext -->
<DataTemplate
x:Key="templateDataItem"
DataType="{x:Type data:DataItem}">
<Grid>
<TextBlock Text="{Binding Nom}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Button x:Name="dest" Width="50" Height="50"
Command="{Binding
Path=DataContext.CmdDrop,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type UserControl}}}"
CommandParameter="{Binding ElementName=dest,
Path=DataContext}"
>
<Button.Background>
<ImageBrush ImageSource="{Binding UriPhoto}"/>
</Button.Background>
<Button.ToolTip >
<TextBlock Text="Clik to Select Cell Drop"/>
</Button.ToolTip>
</Button>
</Grid >
</DataTemplate>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto" ></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0">
<!--pour le Menu ses MenuItems peuvent etre des Control Images -->
<!--comme il y a en peu(ici 6) je n'utilise pas le Binding avec une liste d'images -->
<!--& En sus j'utilise la reference à l'asembly System.Windows.Interactivity -->
<!--qui permet d'emettre des commandes pour n'imorte quel control Wpf -->
<!--contrairement au Pattern ICommand reervé au seul Button -->
<Menu >
<Menu.ToolTip>
<TextBlock Text="Clic to Select an Image to Drag"></TextBlock>
</Menu.ToolTip>
<Image x:Name="imgSrc1" Width="25" Height="25" Source="/Images/bitmap1.bmp"
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<i:InvokeCommandAction
Command="{Binding Path=CmdGetData}"
CommandParameter="{Binding ElementName=img1, Path=Source,Converter={StaticResource cnv}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
<Image x:Name="imgSrc2" Width="25" Height="25" Source="/Images/bitmap2.bmp">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<i:InvokeCommandAction
Command="{Binding Path=CmdGetData}"
CommandParameter="{Binding ElementName=img2, Path=Source,Converter={StaticResource cnv}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
<Image x:Name="imgSrc3" Width="25" Height="25" Source="/Images/bitmap3.bmp">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<i:InvokeCommandAction
Command="{Binding Path=CmdGetData}"
CommandParameter="{Binding ElementName=img3, Path=Source,Converter={StaticResource cnv}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
<Image x:Name="imgSrc5" Width="25" Height="25" Source="/Images/bitmap5.bmp">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<i:InvokeCommandAction
Command="{Binding Path=CmdGetData}"
CommandParameter="{Binding ElementName=img5, Path=Source,Converter={StaticResource cnv}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
<Image x:Name="imgSrc6" Width="25" Height="25" Source="/Images/bitmap6.bmp">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<i:InvokeCommandAction
Command="{Binding Path=CmdGetData}"
CommandParameter="{Binding ElementName=img6, Path=Source,Converter={StaticResource cnv}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
</Menu>
</StackPanel>
<StackPanel Grid.Row="1">
<ItemsControl
x:Name="ListBox2"
ItemTemplate="{StaticResource templateDataItem}"
ItemsSource="{Binding DataItems}"
>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate >
<UniformGrid
IsItemsHost="true"
Rows="{Binding Rows}" Columns="{Binding Columns}" >
</UniformGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</StackPanel>
</Grid>
</UserControl> |
Partager