Ich habe eine ItemsControl
wie folgt:Trigger-Methode des Elements innerhalb des Itemscontrol mit Caliburn Micro
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl cal:Message.Attach="[Event MouseDoubleClick] = [Action ($dataContext).Launch]">
<Grid Background="LightSteelBlue" Width="100" Height="100" Margin="4"/>
</ContentControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Die ItemsControl
‚s Artikel Quelle eine Bindung an ein ObservableCollection<Item>
im View-Modell hat.
Im Folgenden ist die Definition von Item
public class Item
{
public void Launch()
{
}
}
Wenn auf den Item
doppelgeklickt, Ich versuche, die Launch()
Methode der Item
mit folgenden Syntax auslösen:
cal:Message.Attach="[Event MouseDoubleClick] = [Action ($dataContext).Launch]"
Allerdings bekomme ich die Fehlermeldung "Kein Ziel für Methode gefunden".
Verwende ich die Syntax richtig? Oder die Kurzschrift unterstützt einen solchen Anwendungsfall nicht?
UPDATE:
My Ansicht Modell ist wie folgt:
public class MainViewModel
{
// Binding Properties.
public ObservableCollection<Item> Items
{
get;
set;
}
public void Launch()
{
}
// ctor.
public MainViewModel()
{
Items = new ObservableCollection<Item>();
Items.Add(new Item());
Items.Add(new Item());
}
}
Wenn ich die folgende Syntax zu verwenden versucht Launch()
Methode der Item
auszulösen, sie lösen die Launch()
Verfahren der Ansicht Modell statt.
cal:Message.Attach="[Event MouseDoubleClick] = [Action Launch]"