Stylet:
1 PropertyChangedBase类里的PropertyChangedDispatcher属性会被Yamldotnet序列化……也不知道是谁的坑
于是在类里override这个属性(其实应该按照正规的mvvm写法,再写一个private的字段来实际保存,懒得加了)
https://github.com/canton7/Stylet/blob/5e97f9e1ea8c45e9d7033e6e7c7ea8ce41c3420a/Stylet/PropertyChangedBase.cs#L20
[YamlIgnore]
public override Action<Action> PropertyChangedDispatcher
{
get { return Execute.DefaultPropertyChangedDispatcher; }
set { ; }
}
2 DataTemplate里的属性绑定外面的viewmodel
使用BindProxy,按文章所述建立BindProxy类
添加到页面的resource里;
<Window.Resources>
<local:BindingProxy x:Key="proxy" Data="{Binding}" />
</Window.Resources>
使用,设置给s:View.ActionTarget:
<MenuItem Header="配置" ItemsSource="{Binding Profiles}">
<MenuItem.ItemTemplate>
<DataTemplate DataType="{x:Type items:ProfileItem}">
<CheckBox Content="{Binding Name}"
IsChecked="{Binding IsSelected}"
Command="{s:Action SelectProfile}"
s:View.ActionTarget="{Binding Data,Source={StaticResource proxy}}"
CommandParameter="{Binding}" />
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
Stylet:
1 PropertyChangedBase类里的PropertyChangedDispatcher属性会被Yamldotnet序列化……也不知道是谁的坑
于是在类里override这个属性(其实应该按照正规的mvvm写法,再写一个private的字段来实际保存,懒得加了)
https://github.com/canton7/Stylet/blob/5e97f9e1ea8c45e9d7033e6e7c7ea8ce41c3420a/Stylet/PropertyChangedBase.cs#L20
2 DataTemplate里的属性绑定外面的viewmodel
使用BindProxy,按文章所述建立BindProxy类
添加到页面的resource里;
使用,设置给s:View.ActionTarget: