WPF Datagrid Zeile - Kontext-Menü- Menüpunkt Deaktivieren
Hallo ich bin Anfänger-Programmierer und neue WPF-und eine einfache Frage, aber ich verbrachte einige Zeit suchen, die es eine konnte es nicht herausfinden, so dass ich hoffe, Euch wird mir helfen.
Alles was ich will ist das abschalten des Menüelements in einem Kontextmenü in meinem Datagrid.
zum Beispiel: wenn mehrere Zeilen ausgewählt sind, in Datagrid , deaktivieren Sie einen Kontext-Menüpunkt "Eigenschaften"
<DataGrid.Resources>
<ContextMenu x:Key="DataRowContextMenu">
<MenuItem x:Name="RowContMenuProp" Header="Properties">
<MenuItem.Icon>
<Image Source="Resources/proporties.ico" Height="16" Width="16" />
</MenuItem.Icon>
</MenuItem>
<Separator Margin="0" />
<MenuItem Header="Copy" Command="Copy" >
<MenuItem.Icon>
<Image Source="Resources/copy.ico" Height="16" Width="16" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Remove from list" Click="MenuItem_Click_1" >
<MenuItem.Icon>
<Image Source="Resources/cut.png" Height="16" Width="16" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Remove from project" Click="MenuItem_Click_2" >
<MenuItem.Icon>
<Image Source="Resources/remove.ico" Height="16" Width="16" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</DataGrid.Resources>
<DataGrid.RowStyle >
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="ContextMenu" Value="{StaticResource DataRowContextMenu}" />
<Setter Property="BorderThickness" Value="0"/>
</Style>
</DataGrid.RowStyle>
-- disable Context menu item
Private Sub datagrid1_MouseUp(sender As Object, e As MouseButtonEventArgs)
If datagrid1.SelectedItems.Count > 1 Then
InformationsquelleAutor Dude | 2014-09-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein Weg, um darüber zu gehen. Es ist ein bisschen schmutzig aber funktioniert.
Erstellen Sie zuerst ein IValueConverter zu sagen, dass 1 bedeutet aktivieren (true) und den Wert Konverter kann wie folgt Aussehen
Speichern Sie einen Verweis auf das DataGrid in Ihrem DataGridRow
Und schließlich binden Sie die SelectedItems Anzahl der raster, um die IsEnabled-Eigenschaft
Werfen Sie einen Blick auf die WPF Command-pattern-Implementierung. Ein Befehl kann angeben, ob eine Aktion möglich ist, durch die Umsetzung der CanExecute-Methode. Eine Schaltfläche abonnieren kann, das CanExecuteChanged-Ereignis und deaktiviert werden, wenn CanExecute false zurückgibt oder aktiviert werden, wenn CanExecute gibt true zurück,.
Können Sie leicht anpassen, den code aus der MSDN-Seite auf Ihre Bedürfnisse.
Dann in code: