Listview Xamarin表单的GroupHeaderTemplate中的图像触发器绑定不起作用

Listview Xamarin表单的GroupHeaderTemplate中的图像触发器绑定不起作用,listview,xamarin.forms,xamarin.forms.listview,Listview,Xamarin.forms,Xamarin.forms.listview,这是组标题模板。视图模型中图像触发器的绑定不起作用。我想根据分组标题的点击事件更改图像。当组标题展开时,图像应向下箭头,当组标题折叠时,图像应向上箭头向上箭头 这是我的密码 private bool\u header外观; 公共图书馆馆长 { 获取{return\u headerTappedImage;} 设置{u headerTappedImage=value;OnPropertyChanged(“headerTappedImage”);} } 公共JournalHistoryViewPa

这是组标题模板。视图模型中图像触发器的绑定不起作用。我想根据分组标题的点击事件更改图像。当组标题展开时,图像应向下箭头,当组标题折叠时,图像应向上箭头向上箭头


这是我的密码

private bool\u header外观;
公共图书馆馆长
{
获取{return\u headerTappedImage;}
设置{u headerTappedImage=value;OnPropertyChanged(“headerTappedImage”);}
}
公共JournalHistoryViewPage(JournalHistoryPageViewModel JournalHistoryPageViewModel):基本(
journalHistoryPageViewModel)
{
headerTappedImage=false;
初始化组件();
_journalHistoryPageViewModel=journalHistoryPageViewModel;
DocumentList.RefreshCommand=新命令(RefreshJournalHistoryPage);
}

逻辑不是书面的。但是图像应该显示在标题模板中。但它没有显示。原因是什么?

假设下面的
LayoutRoot
BindingContext
页面的
BindingContext
相同,可以按照问题中的建议使用触发器:

<StackLayout x:Name="LayoutRoot">
  <ListView x:Name="listView"
            ItemsSource="{Binding ItemsGroups}"
    ...
    <ListView.GroupHeaderTemplate>
      <DataTemplate>
        <ViewCell>
          <StackLayout>
            <StackLayout.GestureRecognizers>
              <TapGestureRecognizer Command="{Binding Source={x:Reference LayoutRoot}, 
                                                      Path=BindingContext.HeaderSelectedCommand}" 
                                    CommandParameter="{Binding .}" />
            </StackLayout.GestureRecognizers>
            ...
            <Image BackgroundColor="White">
              <Image.Triggers>
                <DataTrigger TargetType="Image" 
                             Binding="{Binding IsVisible}" Value="False">
                  <Setter Property="Source" 
                          Value="{OnPlatform Android=add_black.png, UWP=Assets/add_black.png}" />
                </DataTrigger>
                <DataTrigger TargetType="Image" 
                             Binding="{Binding IsVisible}" Value="True">
                  <Setter Property="Source" 
                          Value="{OnPlatform Android=remove_black.png, UWP=Assets/remove_black.png}" />
                </DataTrigger>
              </Image.Triggers>
            </Image>
            ...
itemsgroup
可以在
ViewModel
中为
LayoutRoot
BindingContext
定义,如下所示,
ItemViewModel
的定义未显示:

public ObservableCollection<Grouping<string, ItemViewModel>> ItemsGroups { get; set; }
headerselected命令的示例实现:

// in constructor:
HeaderSelectedCommand = new Command(p => HeaderSelectedCommandExecute(p));

// property
public ICommand HeaderSelectedCommand { get; private set; }

// action
void HeaderSelectedCommandExecute(object p)
{
    var grp = (Grouping<string, ItemViewModel>)p;
    grp.IsVisible = !grp.IsVisible;
}
//在构造函数中:
HeaderSelectedCommand=新命令(p=>HeaderSelectedCommandExecute(p));
//财产
public ICommand headerselected命令{get;private set;}
//行动
void HeaderSelectedCommandExecute(对象p)
{
var-grp=(分组)p;
grp.IsVisible=!grp.IsVisible;
}

我建议将布尔值转换为图像资源。而不是触发器。下面的答案对我有用。谢谢你的回复@Dilmah谢谢你的回答。找了两天后,它成功了。
var keyForGroupA = "A";
var itemsForGroupA = new ObservableCollection<ItemViewModel>();
var item1 = new ItemViewModel();
itemsForGroupA.Add(item1);
var item2 = new ItemViewModel();
itemsForGroupA.Add(item2);
...
ItemsGroups.Add(new Grouping<string, ItemViewModel>(keyForGroupA, itemsForGroupA);
// in constructor:
HeaderSelectedCommand = new Command(p => HeaderSelectedCommandExecute(p));

// property
public ICommand HeaderSelectedCommand { get; private set; }

// action
void HeaderSelectedCommandExecute(object p)
{
    var grp = (Grouping<string, ItemViewModel>)p;
    grp.IsVisible = !grp.IsVisible;
}