WPF 在改写模板中,控件命令事件触发不起作用

问题描述:MVVMLight框架中,改写ListBox、ListBox.ItemTemplate模板时,模板里面的Button/Image控件绑定命令后,触发不起作用,但在ListBox外的命令正常绑定到指定的ViewModel;

VieweModel 为CarPicturesViewModel,绑定上下文DataContext="{Binding CarPicturesVM ,Source={StaticResource Locator}}"

问题代码

1.声明绑定数据类CarInfo

public class CarInfo : BaseNotifyProperty
{
    private int carIndex;
    public int CarIndex
    {
        get { return carIndex; }
        set
        {
            carIndex = value;
            OnPropertyChanged("CarIndex");
        }
    }

    private string carName;
    public string CarName
    {
        get { return carName; }
        set
        {
            carName = value;
            OnPropertyChanged("CarName");
        }
    }
}

2.界面设计代码,整个界面是UserControl


    
        
            
                
                    
                
            
            
                
                    
                        
                            
                            
                        
                        
                            

问题原因:因为 ListBox 的ItemsSource绑定了 DisplayImageList,DisplayImageList 是一个 CarInfo 类的列表,ListBox里面控件的DataContext就成了CarInfo也就是里面控件的Binding都是CarInfo的属性,比如名称(Binding="{Binding Name}")。而CarInfo里没有AddImageRecord,所以就不能触发操作了。

解决方法把Button的Command绑定为ViewModel里面的AddImageRecord就好了,而ListBox的DataContext就是ViewModel,那这样做就好了;

解决代码

你可能感兴趣的:(模板中命令绑定,WPF)