Laden...

[gelöst] EventTrigger in DataGridTemplateColumn

Erstellt von userid4106 vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.304 Views
U
userid4106 Themenstarter:in
457 Beiträge seit 2006
vor 12 Jahren
[gelöst] EventTrigger in DataGridTemplateColumn

Hallo,

ich habe folgenden XAML Code:


                            <DataGridTemplateColumn Header="Disponiert"
                                                    SortMemberPath="DISPONIERT">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <ToggleButton x:Name="FixFrei"
                                                      Background="#FF2F63FF"
                                                      BorderBrush="{x:Null}"
                                                      Command="{Binding AuftragDisponieren,
                                                                        Mode=OneWay}"
                                                      CommandParameter="{Binding}"
                                                      IsChecked="{Binding DISPONIERT,
                                                                          Mode=TwoWay,
                                                                          UpdateSourceTrigger=PropertyChanged}"
                                                      Style="{DynamicResource ToggleButtonStyleDisponiert}">
                                            <i:Interaction.Triggers>
                                                <i:EventTrigger EventName="Checked">
                                                    <i:InvokeCommandAction Command="{Binding AuftragDisponieren,
                                                                                             Mode=OneWay}"
                                                                           CommandParameter="{Binding Mode=OneWay}" />
                                                </i:EventTrigger>
                                            </i:Interaction.Triggers>
                                        </ToggleButton>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>


Ich möchte also, wenn mein Toogle Button "gechecked" wird eine Methode in meinem VM aufrufen. Allerdings findet die Anwendung nicht die Methode. Liegt daran, dass ich im falschen DataContext bin. Aber wie kann ich das umgehen?

P.S.:
Das Command und den dazugehörigen Parameter im Toggle Button denkt euch mal weg. Es geht nur um den Trigger. Das war nur zum Testen.

3.430 Beiträge seit 2007
vor 12 Jahren

Hallo Second Sun,

das sieht alles ein wenig eigenartig aus.
Was genau willst du hier erreichen?
Einfach nur eine Methode aufrufen wenn sich der Checked-Status ändert?
Das kannst du auch über das Binding auf die Checked-Eigenschaft oder das Command machen.

Wenn es unbedingt der Trigger sein soll dann musst du dort den richtigen DataContext verwenden.

Das Binding im Trigger sieht etwas eigenartig aus. Du kannst evtl. über den ElementName oder das AncestorBinding den DataContext verwenden den du brauchst.
Siehe: How do i use WPF Bindings with relativeSource

Hoffe das hilft dir weiter.

Grüße
Michael

U
userid4106 Themenstarter:in
457 Beiträge seit 2006
vor 12 Jahren

                            <DataGridTemplateColumn Header="Disponiert"
                                                    SortMemberPath="DISPONIERT">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <ToggleButton x:Name="FixFrei"
                                                      Background="#FF2F63FF"
                                                      BorderBrush="{x:Null}"
                                                      IsChecked="{Binding DISPONIERT,
                                                                          Mode=TwoWay,
                                                                          UpdateSourceTrigger=PropertyChanged}"
                                                      Style="{DynamicResource ToggleButtonStyleDisponiert}">
                                            <i:Interaction.Triggers>
                                                <i:EventTrigger EventName="Checked">
                                                    <i:InvokeCommandAction Command="{Binding DataContext.AuftragDisponieren,
                                                                                             RelativeSource={RelativeSource Mode=FindAncestor,
                                                                                                                            AncestorType={x:Type DataGrid}}}"
                                                                           CommandParameter="{Binding Mode=OneWay}" />
                                                </i:EventTrigger>
                                            </i:Interaction.Triggers>
                                        </ToggleButton>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>

So klappt es. Danke