Kontext-Menü Elemente den Befehl binding in WPF mit MVVM

Ich weiß, diese Frage wurde oft gefragt, in unterschiedlicher Weise in vielen Webseiten und auch in StackOverFlow, aber all die Antworten, die ich fand, sind nicht helfen, mich ot um genau zu sein ich bin nicht in der Lage, Sie zu verstehen und umzusetzen, in meiner Anwendung. Also ich dachte an etwas code aus meiner Anwendung so, dass Sie Menschen helfen kann, besser zu mir.

Anweisung Problem : ich bin mit einem WPF DataGrid. Ich habe eine Kontextmenü und ich haben 3 Optionen Ausschneiden,Kopieren,Einfügen. Ich bin mit MVVM für die Entwicklung. Ich möchte DataBind Sie diese Optionen, um Befehle in meinem ViewModel. Aber ich bin nicht in der Lage, das gleiche zu tun. Der Kontext-Menü-Optionen sind nicht immer Daten gebunden an alle !!!

Dies ist mein Grid Code in der XAML :

<custom:DataGrid  
      x:Name="DataGrid_Standard"   
      Grid.Row="1" Grid.Column="1"   
      AutoGenerateColumns="False"                                                           
      IsSynchronizedWithCurrentItem="True"   
      Background="Transparent"
      ItemsSource="{Binding FullGridData}" 
      ItemContainerStyle="{StaticResource defaultRowStyle}"
      ColumnHeaderStyle="{StaticResource DefaultColumnHeaderStyle}"                         
      Grid.ColumnSpan="2">

Dann habe ich ein ContextMenu und einen Stil Header-Element

<ContextMenu x:Key="columnHeaderMenu">
   <MenuItem Command="{Binding CutCommand}"
             Header="Test" />
   <MenuItem Header="Copy"/>
   <MenuItem Header="Paste"/>
</ContextMenu>
<Style TargetType="{x:Type custom:DataGridColumnHeader}" x:Key="DefaultColumnHeaderStyle">
    <Setter Property="ContextMenu" Value="{DynamicResource columnHeaderMenu}" >
</Style>

Diese Linie geht in meinen Konstruktor

public Window1()
{            
   this.DataContext = new AppData();
}

Dieser code geht in meinem AppData-Klasse:

public class AppData  
{ 
    private IList<GridData> fullGridData = new ObservableCollection<GridData>();<br> 
    public IList<GridData> FullGridData
    {
        get { return fullGridData; }
        set { fullGridData = value; }
    }

    private DelegateCommand<object> cutCommand;
    public DelegateCommand<object> CutCommand
    {
        get
        {
            if (cutCommand == null)
            {
                cutCommand = new DelegateCommand<object>(CutColumn);
            }
            return cutCommand;
        }
    }

    private void CutColumn(object obj)
    {
        //some code goes here
    }   
}

** Ich will wissen, wo genau mache ich falsch?? Warum ist das DataBinding nicht passiert??
Bitte helfen Sie mir über diese. Bitte stellen Sie mir den Beispiel-code oder änderungen in meinem code, von dem ich es erreichen kann. **

InformationsquelleAutor GuruC | 2010-10-01

Schreibe einen Kommentar