Button Command wird nicht ausgeführt

  • WPF

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Button Command wird nicht ausgeführt

    Hallo,

    ich habe untenstehendes UserControl. Es besteht aus Footer, Body und Header und dient als Inhalt für ein TabControl (TabItem).

    Seit gestern nun, funktionieren die Buttons im DataGrid nicht mehr. Es ging alles einwandfrei und seit gestern reagieren die Buttons nicht mehr auf Klicks.

    Nach intensivem Testen kann ich folgendes sagen
    • Es gibt keine Bindingfehler
    • Das richtige ICommand-Object wird gebunden und ich kann es im im CodeBehind verwenden. Es macht das richtige.
    • Betroffen sind nur die Buttons innerhalb des DataGrid, nicht die außerhalb
    • Auch ohne Binding, also mit dem Click-Event wird nichts ausgeführt. Die entsprechende Event-Routine wird nicht aufgerufen.

    Was hatte ich gemacht? Nix eigentlich, zumindest was die Funktion der Buttons angeht. Ich hatte etwas mit den Styles rumprobiert. Da aber auch Buttons betroffen sind, bei denen ich keine Styles binde, kann es daran nicht liegen.

    Was habe ich verdreht? Ich bin ratlos!

    Gruß

    MQ



    Spoiler anzeigen

    XML-Quellcode

    1. <UserControl x:Class="CaL.OrdersOpenControl"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    6. xmlns:local="clr-namespace:CaL"
    7. xmlns:p="clr-namespace:CaL.Properties"
    8. mc:Ignorable="d"
    9. d:DesignHeight="450" d:DesignWidth="800"
    10. >
    11. <UserControl.Resources>
    12. <ResourceDictionary>
    13. <ResourceDictionary.MergedDictionaries>
    14. <ResourceDictionary Source="/Resources/Dictionary.xaml"/>
    15. </ResourceDictionary.MergedDictionaries>
    16. <local:BullitFillConverter x:Key="bullitFillConverter"/>
    17. <local:DummyConverter x:Key="dummyConverter"/>
    18. </ResourceDictionary>
    19. </UserControl.Resources>
    20. <Grid>
    21. <Grid.RowDefinitions>
    22. <RowDefinition Height="{StaticResource HeaderHeight}"/>
    23. <RowDefinition Height="*"/>
    24. <RowDefinition Height="{StaticResource FooterHeight}"/>
    25. </Grid.RowDefinitions>
    26. <Border Grid.Row="0"
    27. Style="{StaticResource HeaderStyleUser}">
    28. <Grid>
    29. <Label Grid.Row="0"
    30. Content="{x:Static p:Translate.OffeneAufträgeHeader}"
    31. Style="{StaticResource HeaderLabelStyleUser}"
    32. HorizontalAlignment="Left"/>
    33. <Button Grid.Row="0"
    34. Style="{StaticResource IconButtonInlayStyle}"
    35. ToolTip="{x:Static p:Translate.DockUndock}"
    36. Command="{Binding MenuItemClickCommand}"
    37. CommandParameter="DockUndock"
    38. HorizontalAlignment="Right"
    39. VerticalAlignment="Center"
    40. Visibility="Visible">
    41. <Image Source="/Images/dock_window_icon_138670.png"
    42. Style="{StaticResource IconButtonIconStyle}"/>
    43. </Button>
    44. </Grid>
    45. </Border>
    46. <Border Grid.Row="1">
    47. <DataGrid x:Name="dataGrid"
    48. AutoGenerateColumns="false"
    49. RowBackground="{StaticResource DataGridRowColor}"
    50. AlternatingRowBackground="{StaticResource DataGridAlternatingRowColor}"
    51. HeadersVisibility="All"
    52. RowHeaderStyle="{StaticResource RowHeaderStyle}"
    53. ItemsSource="{Binding Data}"
    54. SelectedItem="{Binding SelectedItem}"
    55. SelectionMode="Single"
    56. SelectionUnit="FullRow"
    57. IsReadOnly="True"
    58. >
    59. <DataGrid.Columns>
    60. <DataGridTemplateColumn Header="Testspalte">
    61. <DataGridTemplateColumn.CellTemplate>
    62. <DataTemplate>
    63. <Button Content="Press" Click="Button_Click_1"/>
    64. </DataTemplate>
    65. </DataGridTemplateColumn.CellTemplate>
    66. </DataGridTemplateColumn>
    67. <DataGridTemplateColumn Width="auto">
    68. <DataGridTemplateColumn.CellTemplate>
    69. <DataTemplate>
    70. <Button
    71. Command="{Binding DataContext.MenuItemClickCommand,
    72. RelativeSource={RelativeSource AncestorType={x:Type UserControl}}
    73. }"
    74. CommandParameter="Test"
    75. Content="test"
    76. >
    77. </Button>
    78. </DataTemplate>
    79. </DataGridTemplateColumn.CellTemplate>
    80. </DataGridTemplateColumn>
    81. <DataGridTextColumn Width="*"/>
    82. </DataGrid.Columns>
    83. </DataGrid>
    84. </Border>
    85. <Border Grid.Row="2"
    86. Style="{StaticResource FooterStyleUser}">
    87. <StackPanel Grid.Row="2"
    88. Orientation="Horizontal"
    89. HorizontalAlignment="Right"
    90. Background="{StaticResource UserColorDefault}">
    91. <Button
    92. Style="{StaticResource IconButtonInlayStyle}"
    93. ToolTip="{x:Static p:Translate.Melden}"
    94. Command="{Binding MenuItemClickCommand}"
    95. CommandParameter="Melden"
    96. Visibility="{Binding VisibilityWorker}"
    97. HorizontalAlignment="Right"
    98. Margin="0,0,10,0">
    99. <Image Source="/Images/bullhorn-8x.png"
    100. Style="{StaticResource IconButtonIconStyle}"/>
    101. </Button>
    102. <Button
    103. Style="{StaticResource IconButtonInlayStyle}"
    104. ToolTip="{x:Static p:Translate.Schließen}"
    105. Command="{Binding MenuItemClickCommand}"
    106. CommandParameter="Schließen"
    107. HorizontalAlignment="Right">
    108. <Button.Content>
    109. <Image Source="/Images/x-8x.png"
    110. Style="{StaticResource IconButtonIconStyle}"/>
    111. </Button.Content>
    112. </Button>
    113. </StackPanel>
    114. </Border>
    115. </Grid>
    116. </UserControl>

    MasterQ schrieb:

    funktionieren die Buttons im DataGrid nicht mehr....
    Was hatte ich gemacht? Nix eigentlich, zumindest was die Funktion der Buttons angeht. Ich hatte etwas mit den Styles rumprobiert. Da aber auch Buttons betroffen sind, bei denen ich keine Styles binde, kann es daran nicht liegen.
    Einerseits sagst du, es beträfe nur Buttons im DG.
    Andererseits sagst du, du habest an Styles rumgefummelt.

    Naja - mit einem Style kann man die Funktionalität eines DGs natürlich vollkommen auf den Kopf stellen.
    Also in die Richtung würde ich weiter forschen: Welche Style-Änderung hat das DG kaputt gemacht.

    Ich kann dir nur wünschen, du verwendest ein SourceControl-System, oder was sonstiges, um Backups zu erzeugen, zB SolutionExplorer - OpenSource.

    ErfinderDesRades schrieb:

    Naja - mit einem Style kann man die Funktionalität eines DGs natürlich vollkommen auf den Kopf stellen.
    Also in die Richtung würde ich weiter forschen: Welche Style-Änderung hat das DG kaputt gemacht.


    Im wesentlichen habe ich die Buttons nur transparent gemacht, Background also auf Null.

    Die Änderungen in den Styles betreffen aber auch die Buttons außerhalb die noch funktionieren. Daher halte ich es für ausgeschlossen, dass das das Problem sein kann. Betroffen sind auch Buttons, deren Syle ich nicht geändert habe. In meinem Post ist ein simpler Button innerhalb des DG ohne Styles ohne alles, und mit Click-Event. Ich denke, daher sind die Styles raus als Ursache. Am Style des DG hatte ich nicht geschraubt.

    Ich kann dir nur wünschen, du verwendest ein SourceControl-System, oder was sonstiges, um Backups zu erzeugen, zB SolutionExplorer - OpenSource.

    Ja, SVN.


    Akanel schrieb:

    Wenn du den Anchestortype angibst, musst du da nicht auch mit FindAnchestor arbeiten?


    Das Schlüsselwort FindAncestor ist offensichtlich optional. Es geht mit und auch ohne.
    Ich habe jetzt ein neues Usercontrol angelegt und Element für Element vom "kaputten" UserControl ins neue rüberkopiert.

    Im neuen UserControl funktioniert alles.

    Jetzt frag mich einer, warum das alte Control nicht mehr will.


    __EDIT__

    Ich habe den Übeltäter gefunden! Da muss man erstmal draufkommen.

    C#-Quellcode

    1. public OrdersOpenViewModel(OrdersOpenControl view) : this()
    2. {
    3. this.View = view;
    4. View.GotFocus += View_GotFocus;
    5. }


    Im Constructor des Viewmodels hatte ich den Event-Handler für den Erhalt des Fokus gesetzt. Das verhindert offensichtlich, dass das Click-Event der Buttons ausgelöst wird.

    Wird Zeile 4 auskommentiert, dann funktionieren die Buttons.

    Das hat mich jetzt zwei Tage gekostet!!

    manno

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