我知道這個問題在很多網站和StackOverFlow中都以不同的方式被問過很多次,但是我發現的所有答案都沒有幫助我確切地說我無法理解他們並在我的應用程序中執行。所以我想從我的應用程序中添加一些代碼,以便人們可以更好地幫助我。上下文菜單項命令綁定使用MVVM的WPF
問題陳述:我正在使用WPF DataGrid。我添加了一個上下文菜單,我有3個選項剪切,複製,粘貼。我正在使用MVVM進行開發。我想DataBind這些選項到我的ViewModel中的命令。但我無法這樣做。上下文菜單選項沒有獲取數據綁定!
這是我的併網標準的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">
然後,我有一個ContextMenu和頭元素
<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>
一個樣式該行雲在我的構造
public Window1()
{
this.DataContext = new AppData();
}
此代碼進入我的AppData類:
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
}
}
**我想確切地知道我在哪裏做錯了?爲什麼DataBinding不會發生? 請幫我解決這個問題。請向我提供示例代碼或修改我現在可以實現的代碼。 **
,因爲我想只爲header.Actually上下文菜單我現在用你的第二個解決方案命令正在關聯,但我的菜單項被禁用。我正在使用DelegateCommand類進行綁定。它真的很奇怪爲什麼我的菜單項被禁用? – GuruC 2010-10-04 07:20:16
它爲我工作,但我不知道你使用的是什麼DelegateCommand的實現;看看控制命令是否啓用的第二個參數。我在這裏添加了一個示例: cutCommand = new DelegateCommand
我使用codeplex的mvvm工具包中提供的DelegateCommand。我看過一些他們說錯誤的網站。鏈接如下所示:http://connect.microsoft.com/VisualStudio/feedback/details/421816/wpf-command-based-context-menu-item-initially-disabled http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/7bd75a7c-eab4-4f3a-967b-94a9534a7455 – GuruC 2010-10-06 08:24:44