【问题标题】:How to bind properties to elements inside a CollectionView DataTemplate如何将属性绑定到 CollectionView DataTemplate 中的元素
【发布时间】:2021-05-06 09:45:45
【问题描述】:

我正在尝试将IsVisible 属性绑定到DataTemplate 内的StackLayout,但我无法使其工作。

我尝试过this post,但在x:Reference 中它不允许我将x:Name 放在CollectionView 中。

<CollectionView x:Name="myCollectionView"
            HorizontalOptions="FillAndExpand"
            ItemsSource="{Binding myBookList}">

  <CollectionView.ItemTemplate>
      <DataTemplate x:Name="dataTemplate">
          <ContentView>
              <StackLayout HorizontalOptions="EndAndExpand"
                           IsVisible="{Binding StackIsVisible}"
                           Orientation="Horizontal">
                  <Grid>
                      <ImageButton Margin="0,0,25,0"
                                   HorizontalOptions="EndAndExpand"
                                   Source="img1"
                                   WidthRequest="25" />
                      <ImageButton Source="img2"
                                   WidthRequest="25"
                                   HorizontalOptions="End" />
                  </Grid>
                  <ImageButton x:Name="myImageButton"
                               HorizontalOptions="EndAndExpand"
                               Source="img3"
                               WidthRequest="25" />
              </StackLayout>
          </ContentView>
      </DataTemplate>
   </CollectionView.ItemTemplate>

ViewModel 和视图已正确连接,因为我有其他绑定工作,但这个对我不起作用。

     private bool _StackIsVisible;
     public bool StackIsVisible
     {
             get => _StackIsVisible;
             set
             {
                 _StackIsVisible = value;
                 OnPropertyChanged();
             }
     }
     public ViewModel(){
           StackIsVisible=false;
     }

【问题讨论】:

标签: xaml xamarin.forms data-binding datatemplate


【解决方案1】:

使用Reference时不必指定“名称”关键字

<StackLayout IsVisible="{Binding Source={x:Reference myCollectionView},
                                     Path=BindingContext.StackIsVisible}" ...>

【讨论】:

  • 如果它回答了您的问题或您觉得它有帮助,请通过upvote ▲/✅ 告诉我,否则您可以给我留下反馈/评论。
猜你喜欢
  • 2021-05-21
  • 2017-02-26
  • 2011-02-23
  • 2014-07-17
  • 2016-12-08
  • 2018-09-30
  • 1970-01-01
  • 2013-03-23
  • 2012-04-11
相关资源
最近更新 更多