Skip to content

记录在WPF项目中遇到的一些坑 #10

Description

@zhongfly

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>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions