Wie binde ich Button in einem DataGrid?

  • WPF

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von EugenIS.

    Wie binde ich Button in einem DataGrid?

    Hallo Leute und danke fürs reinschauen...

    kann mir jemand einen kleinen Beispiel zeigen, wie ich einen Button in DataGrid binde? Habe bis jetzt das was nicht klappt...

    XML-Quellcode

    1. ...
    2. <DataGridTemplateColumn Header="Speichern" >
    3. <DataGridTemplateColumn.CellTemplate>
    4. <DataTemplate>
    5. <Button MinWidth="100" Click="ShowHideDetails" Margin="5" Content="" VerticalAlignment="Center" HorizontalAlignment="Center"
    6. Command="{Binding btnSave, ElementName=Top}" CommandParameter="{Binding}"
    7. ></Button>
    8. </DataTemplate>
    9. </DataGridTemplateColumn.CellTemplate>
    10. </DataGridTemplateColumn>
    11. ...
    Habe eine Liste. In der Liste erstelle ich einen Button. An dem will ich es dran binden...

    VB.NET-Quellcode

    1. Dim myButton As Button
    2. Public Property btnSave As Button
    3. Get
    4. If myButton Is Nothing Then
    5. myButton = New Button()
    6. myButton.Content = "Hallo"
    7. AddHandler myButton.Click, AddressOf ButtonClick
    8. End If
    9. Return myButton
    10. End Get
    11. Set(value As Button)
    12. End Set
    13. End Property
    Dann solltest du doch lieber ein Binding auf die Text-Property machen?

    XML-Quellcode

    1. Command="{Binding btnSave, ElementName=Top}" CommandParameter="{Binding}"


    Das Command Property wird ausgeführt wenn der Button geklickt wird, sofern das Binding auf ein Objekt zeigt was von ICommand erbt.

    Beispielsweise implementierst du die folgende Klasse:

    C#-Quellcode

    1. public class SaveCommand : ICommand
    2. {
    3. public event EventHandler CanExecuteChanged;
    4. public SaveCommand()
    5. {}
    6. // Wird aufgerufen um zu prüfen ob das Command ausgeführt werden kann (Button wird ausgegraut, wenn false zurückgegeben wird
    7. public bool CanExecute(object parameter)
    8. {
    9. return true;
    10. }
    11. // Wird vom Command Binding aufgerufen. parameter enthält das mit "CommandParameter" übergebene Objekt
    12. public void Execute(object parameter)
    13. {
    14. // hier der auszuführende code
    15. }
    16. }


    Jetzt fügst du deiner DataSource ein Property hinzu:

    C#-Quellcode

    1. private SaveCommand m_saveCommand = new SaveCommand();
    2. public SaveCommand CmdSave
    3. {
    4. get { return m_saveCommand; }
    5. }


    Dann benutzt du das Command Binding so:

    XML-Quellcode

    1. <Button Command="{Binding CmdSave}" />


    Lesetipp zum Thema MVVM: codeproject.com/Articles/81929…p-Basics-to-Advance-Level