none
Parent eines Templates herausfinden RRS feed

  • Frage

  • Guten Morgen zusammen.

     

    Ich habe ein Datagrid.

    Dieses hat ein Datatemplate:

     

            <DataTemplate x:Key="PositionsTemplate">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="40" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="20" />
                        <RowDefinition Height="20" />
                        <RowDefinition Height="20" />
                    </Grid.RowDefinitions>
                    
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Path=DateOnly}" FontSize="11" FontWeight="Bold" />
                        <TextBlock Text="{Binding Path=TimeOnly}" FontSize="8" FontWeight="Bold" Margin="10,0,0,10" HorizontalAlignment="Right" />
                    </StackPanel>
                    
                    <TextBlock Text="{Binding Path=Koordinaten}" Grid.Row="1" Margin="5,0,0,0" Grid.Column="0" FontSize="10" />
                    <Image Source="/KfzOrtung7;component/Images/Speed_48.PNG" Grid.Row="0" Grid.Column="1" Height="16" Width="16"></Image>
                    <TextBlock Text="{Binding Path=Geschwindigkeit}" Grid.Row="1" Margin="5,0,0,0" Grid.Column="1" FontSize="8" />
                    <telerik:RadButton Grid.Row="2" Grid.ColumnSpan="2" Margin="150,2,2,2" Content="Zeige Detail" 
                                       FontSize="8" CornerRadius="5" Cursor="Hand" Click="ShowDetailPosition"/>
                </Grid>
            </DataTemplate>
    

     

    Das fuzzt auch, aber mein Problem ist nun der Button im Template.

    Der Benutzer kann auf den Button klicken, aber wenn er das tut, muss ich VORHER wissen, welches Item aktiv ist.

    Es könnte ja sein, dass SelectedIndex 0 ist, er aber den Button des 5. Eintrag anklickt, ohne vorher das Item ausgewählt zu haben.

     

    Also was ich suche:

    Beim Klick auf den Button im Template muss ich herausfinden, um welchen Eintrag in dem Grid es sich handelt.

    Dann kann ich diesen als SelectedItem setzen, wenn SelectedItem unterschiedlich ist.

    Dann kann erst der eigentilche Code ausgeführt werden.

     

    Habe schon versucht:

    private void ShowDetailPosition(object sender, RoutedEventArgs e)
    {   
        var cobject = button1.Parent; 
        Strecken.Focus();
    
        Positionen pt = (Positionen)Strecken.SelectedItem;
    

     

    Aber cobject liefert mit lediglich das Grid als Object zurück, indem sich der Button befindet.

    Somit weiss ich wieder nicht, um welches Item es sich handelt.

     

    Hat jemand vielleicht eine Idee?

     

    Vielen Dank im voraus und schönen Sonntag noch.

    Rüdiger

     

     

     

     

     

     

     

     

     


    • Bearbeitet Ruediger42 Sonntag, 25. September 2011 09:16 Korrektur
    Sonntag, 25. September 2011 08:58

Antworten

  • Ich kenne den Button nicht, den Du nutzt. Bei einem Button aus dem Framework kann man die Command-Eigenschaft und die CommandParameters nutzen Wenn die CommandParameters an das Datenelement gebunden werden, dann hat die Ereignisroutine das konkrete Element. Bei Deinem Button könnten man, falls kein Command unterstützt wird, eine attaches beahvior nutzen und damit das Datenelement durchschleifen oder auch einen geerbten Button mit zusätzlicher Eigenschaft, die an das Datenelement gebunden wird und dann im Code genutzt werden kann.
     
    --
    Viele Gruesse
    Peter
    • Als Antwort markiert Ruediger42 Samstag, 1. Oktober 2011 09:05
    Sonntag, 25. September 2011 14:59

Alle Antworten

  • Ich kenne den Button nicht, den Du nutzt. Bei einem Button aus dem Framework kann man die Command-Eigenschaft und die CommandParameters nutzen Wenn die CommandParameters an das Datenelement gebunden werden, dann hat die Ereignisroutine das konkrete Element. Bei Deinem Button könnten man, falls kein Command unterstützt wird, eine attaches beahvior nutzen und damit das Datenelement durchschleifen oder auch einen geerbten Button mit zusätzlicher Eigenschaft, die an das Datenelement gebunden wird und dann im Code genutzt werden kann.
     
    --
    Viele Gruesse
    Peter
    • Als Antwort markiert Ruediger42 Samstag, 1. Oktober 2011 09:05
    Sonntag, 25. September 2011 14:59
  • Hi Peter.

     

    vielen Dank für den Tipp.

    Das mit den "attaches beahvior" hat prima geklappt.

     

    Rüdiger

    Samstag, 1. Oktober 2011 09:06