Ich habe eine ListBox an eine ObservableCollection gebunden, mit einem Canvas als ItemsPanel. Alles funktioniert wie erwartet - ich habe das Ziehen der Objekte erfolgreich implementiert - aber das Problem ist, dass ich den ZIndex des angeklickten Objekts nicht setzen kann. Debugging zeigt, dass alle Elemente einen ZIndex von 0 haben, der mir seltsam erscheint. Was ich will, ist, den Gegenstand nach vorne zu bringen, wenn er angeklickt und nach der Veröffentlichung zurückgeschickt wird. Kann mir jemand Ideen geben? Bitte zögern Sie nicht, nach irgendeinem Code zu fragen, der nützlich sein könnte.ZIndex auf ObservableCollection-gebundene ListBox
Update: Dies ist die ItemsContainerStyle als Fenster Ressource definiert
<Style x:Key="MediaContainerStyle" TargetType="ListBoxItem">
<Setter Property="Canvas.Left" Value="{Binding MediaPosition.X,UpdateSourceTrigger=PropertyChanged}"/>
<Setter Property="Canvas.Top" Value="{Binding MediaPosition.Y,UpdateSourceTrigger=PropertyChanged}"/>
<Setter Property="Panel.ZIndex" Value="{Binding ZIndex,UpdateSourceTrigger=PropertyChanged}"/>
</Style>
und die Vorlage für den Artikel
<DataTemplate x:Key="MediaDataTemplate">
<views:MediaItemView MouseDown="OnMediaItemMouseDown"
MouseMove="OnMediaItemMouseMove"/>
</DataTemplate>
wo MediaItemView ein Steuer Benutzer ist.
In der Code-behind, ich
void OnMediaItemMouseDown(Object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == Pressed)
{
FrameworkElement feItem = sender as FrameworkElement;
MediaViewModel vmItem = feItem.DataContext as MediaViewModel;
vmItem.ZIndex = vm.MainMedia.Count;
// Keep the click point
pClick = e.GetPosition(feItem);
}
}
wo vm eine Instanz meiner zugrunde liegenden Viewmodel ist, eine Doppel Eigenschaft ZIndex
Schwer zu sagen, ohne Ihren Code zu sehen. Stellen Sie jedoch sicher, dass Sie den ZIndex im ItemContainerStyle und nicht im ItemTemplate festlegen. – Clemens
Ich habe das versucht. Ich habe Panel.ZIndex des ItemContainerStyle an eine Eigenschaft in meinem zugrunde liegenden Ansichtsmodell gebunden und das mit der Maus geändert, aber es funktioniert nicht. Welchen Code möchten Sie sehen? –
"Welchen Code möchten Sie sehen?" Alle relevanten, d.h. die XAML der ListBox und die entsprechenden Teile des Ansichtsmodells. – Clemens