wpf中MVVM一直用的自己写的框架,最近试了试Caliburn.Micro。
Caliburn.Micro可以通过x:name来进行属性和事件绑定。
比如
<Button x:Name="SayHello" Height="50" Content="Click me" />
viewmodel中只需要有个
public void SayHello()
{
MessageBox.Show(string.Format("Hello {0}",Name));
}
点击按钮就可以触发这个方法了。
然后我试了下在DataTemplate里的Button是不是也可以根据x:name来进行触发呢。结果是不行。
在之前用的MVVM框架里,需要Button binding 一个Command,还需要RelativeSource找到是哪个对象的Command。
后来发现Caliburn.Micro有个Message.Attach可以指定触发方法
<DataTemplate x:Key="lsvitem">
<Button cal:Message.Attach="SayHello" Height="30" Width="100" Content="{Binding}"/>
</DataTemplate>
而且不需要指定RelativeSource。
刚看了一点,有时间再用用。