Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[gelöst] Button Command Binding in DataTemplate
Pippl
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

[gelöst] Button Command Binding in DataTemplate

beantworten | zitieren | melden

Hallo,

ich sitze gerade an einen kniffligen Problem und bin bisher auf noch keine Lösung gekommen X(

Folgende Problemstellung:

Ich habe in einem UserControl eine ListBox definiert. Diese bekommt die Items per Binding gesetzt.
Um die Daten wie gewünscht bekommt die ListBox auch noch einen ItemContainerStyle gesetzt.
In diesem Style wird per Trigger entschieden welches der 2 DataTemplates verwenden wird (das selektierte Item wird mit mehr Daten angezeigt als die anderen). In einem der DataTemplates gibt es nun einen Button dem ich ein Command binden will.
Das Problem das Command, welches ich binde wird bei jedem Wechsel des ListBoxItem aufgerufen und nicht beim Button Klick.

Hier das XAML (nur auf das entsprechende Template und die ListBox Definition begrenzt)
    <UserControl.Resources>
        <DataTemplate x:Key="ItemTemplate">
// wie das DataTemplate SelectedItemTemplate aufgebaut aber ohne innere ListBox und Button
        </DataTemplate>

        <DataTemplate x:Key="SelectedItemTemplate">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>

                <Label Grid.Row="0" Grid.RowSpan="2" Content="{Binding Id}" />
                <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal">
                    <Label Content="{Binding Firstname}" />
                    <Label Content="{Binding Secondname}" />
                    <Image Source="{Binding GenderIcon}" Height="16" Width="16" />
                </StackPanel>
                <Label Grid.Row="1" Grid.Column="1" Content="{Binding NoteShort}" />
                <ListBox ItemsSource="{Binding Records}" Grid.Row="2" Grid.ColumnSpan="2">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <Label Content="{Binding Id}" />
                                <Label Content="{Binding PlayDate}" />
                                <Label Content="{Binding Role}" />
                                <Label Content="{Binding Note}" />
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
// hier binde ich das gewünschte Command
                <Button Grid.Row="3" Content="Details" Margin="2.5" Width="80"
                        Command="{Binding ShowActorDetails}"/>
            </Grid>
        </DataTemplate>

        <Style TargetType="{x:Type ListBoxItem}" x:Key="ContainerStyle">
            <Setter Property="ContentTemplate" Value="{StaticResource ItemTemplate}" />
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="ContentTemplate" Value="{StaticResource SelectedItemTemplate}" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </UserControl.Resources>

............

        <ListBox x:Name="ActorListBox" Grid.Row="1" ItemsSource="{Binding Actors}" ItemContainerStyle="{StaticResource ContainerStyle}" />

So nun zur Frage .... warum wird das Command nicht beim Button Klick aufgerufen, sondern wenn ich das Item in der ListBox wechsel?

Ich hoffe das Problem ist verständlich geschrieben und es kann jemand weiterhelfen

MfG Sebastian
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Pippl am .
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

kann man glaub nix zu sagen - du müsstest allenfalls eine TestAnwendung anhängen, die den Fehler reproduziert.
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
Pippl
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

Gelöst

beantworten | zitieren | melden

Beim Reduzieren der Solution auf das Wesentliche, hat sich gezeigt das es doch wie gewünscht funktioniert.
Ich glaub das Problem lag einfach an der Uhrzeit
private Nachricht | Beiträge des Benutzers