WPF Command-Bindung im DataTemplate
Ich bin mit ItemsControl
zu halten meine Sammlung.
Die ItemsPanel
ist ein Canvas
, die ItemTemplate
ist ein block von Border
>StackPanel
>TextBlocks
Ich will bind-Befehl in der DataTemplate
zu fangen, klicken Sie auf einen block (item meiner Sammlung)
Code:
<Grid Grid.Row="1" Grid.Column="1" >
<ItemsControl ItemsSource="{Binding Products}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<helpers:DragCanvas
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AllowDragging="True"
AllowDragOutOfView="False" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- The border and its content is what I see
on my canvas, I want to bind a command here (on click do something) -->
<Border BorderThickness="1" BorderBrush="Gold">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" />
<TextBlock Text="{Binding Path=Price}" />
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
InformationsquelleAutor Stacked | 2014-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das erste Objekt, das kommt im Kopf befestigt werden, der Befehl ist der
Border
und da dies letztere nichtClick
Veranstaltung, ich bin gonna verwendenMouseLeftButtonDown
, und da Befehle verwendet werden, die nur mitButton
-Basis-controls (Button, RadioButton, CheckBox, RepeatButton ...) brauchen SieEventTriggers
, dein DataTemplate, das sollte dann so Aussehen:Seit Ihr ItemsControl die Quelle gebunden ist, um die Produkte dann, das DataTemplate ist DataContext wird ein Produkt-Objekt, um zu vermeiden, dass Sie sollten binden Sie den Befehl source, um das Fenster zu Ahnen, die seine DataContext gebunden ist an das ViewModel enthält die RelayCommand :
PS : Die
command:EventToCommand
ist von MVVM-Light ,wenn Sie nicht mit MVVM-Light Sie können gehen Sie einfach mit diesem statt :Dies sollte perfekt funktionieren, hoffe ich, gut erklärt.
InformationsquelleAutor AymenDaoudi
Können Sie versuchen, so etwas wie dieses:
Command="{Binding SomeCommand}"
, den DataContext des DataTemplate festgelegt ist-Produkt (Modell) nicht auf das ViewModelFair genug. Bearbeitet.
InformationsquelleAutor Den