Auslesen von Buttonnamen im Adapter

  • WPF

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Jaymo.

    Auslesen von Buttonnamen im Adapter

    Hallo Zusammen,

    ich würde gerne als Reaktion auf einen Button click dessen Namen herausfinden.

    Der Adapter ist in der View angebunden, die richtige prozedur wird auch verwendet, wenn ich allerdings versuche mit

    VB.NET-Quellcode

    1. Dim ActBtnName As String = (TryCast(sender, System.Windows.Controls.Button).Name)

    den namen des geklickten Buttons zu erhalten, bekomme ich eine Exception weil sender Nothing ist.

    Hier der Code im Adapter:

    VB.NET-Quellcode

    1. <ExportAdapter("TestAdapter")>
    2. Public Class TestAdapter
    3. Inherits AdapterBase
    4. Private LastManBtn As String
    5. Public Sub New()
    6. If ApplicationService.IsInDesignMode Then
    7. Return
    8. End If
    9. Me.GetBtnNameCommand = New ActionCommand(AddressOf GetBtnName)
    10. End Sub
    11. #Region "Commands"
    12. Private m_GetBtnNameCommand As ICommand
    13. Public Property GetBtnNameCommand() As ICommand
    14. Get
    15. Return m_GetBtnNameCommand
    16. End Get
    17. Set(ByVal value As ICommand)
    18. m_GetBtnNameCommand = value
    19. End Set
    20. End Property
    21. #End Region
    22. Private Sub GetBtnName(sender As Object)
    23. Dim ActManBtn As String = (TryCast(sender, System.Windows.Controls.Button).Name.ToString)
    24. End Sub
    25. End Class


    und hier der XAML code:

    XML-Quellcode

    1. <vw:View.DataContext>
    2. <vw:AdapterBinding Name="TestAdapter"/>
    3. </vw:View.DataContext>
    4. <Grid x:Name="LayoutRoot" Background="#FFE7E7E7">
    5. <Button x:Name="button" Content="Button" Grid.Column="2" HorizontalAlignment="Left" Margin="170,36,0,0" VerticalAlignment="Top" Width="75" Command="{Binding GetBtnNameCommand}"/>


    Grüße Jaymo
    Hallo

    Du bekommst Nothing wegen dem TryCast. Kann nicht gecasted werden wird Nothing zurückgegeben.
    Ändere TryCast auf DirectCast und du bekommst eine Exception welche dich auf die richtige spur bringt. Denn sender wird hier ein Command sein.

    Vorschlag: Übergebe den Button dem Command als Parameter!

    Edit: Solltest du wirklich "nur" den Button-Namen benötigen kannst du es direkt im ComandParameter übergeben.

    z.b.

    XML-Quellcode

    1. CommandParameter="{Binding Name, RelativeSource={RelativeSource Self}}"



    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()