我的类有一个我的viewmodel类的ObservableCollection,我在xaml中设置Itemcontrol的itemsource,如下所示
<ItemsControl ItemsSource="{Binding ConditionItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander Background="#FFD0D7EB">
<StackPanel>
<Button Content="Delete" HorizontalAlignment="Right" Width="180" Margin="0,0,12,10" Command="{Binding DeleteItem}" CommandParameter="{Binding}">
</Button> </StackPanel>
</Expander>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我的DeleteItem永远不会被调用.
private RelayCommand _DeleteRule;
private void DoDeleteRule(object item)
{
if (item != null)
{
MessageBox.Show("in del");
}
}
public ICommand DeleteItem
{
get
{
if (_DeleteRule == null)
_DeleteRule = new RelayCommand(o => DoDeleteRule(o));
return _DeleteRule;
}
}
Run Code Online (Sandbox Code Playgroud)
我在xaml做错了吗?
使用ItemsControl绑定{Binding ConditionItems},因此它希望DeleteItem命令位于该列表的子项内.我想这不是这种情况,DeleteItem存在于ViewModel.
你可以绑定到DataContext的Window,例如,在那里你可以找到的DeleteItem命令.或者创建一个代理元素.