首页 > 解决方案 > Viewcell 绑定上下文在 xamarin 表单中不起作用

问题描述

我有一个列表视图和许多视图单元。Itemstemplate 是使用 MessageTemplateSelector 类选择的。在 MainViewModel 中有一个 Messages 集合。我已将消息集合绑定到列表视图中。它工作正常。但是 viewcell UI 元素与名为 ShowSenderIcon 的 viewmodel 属性绑定,该属性未绑定到 UI 元素中。我尝试了很多建议。但它不起作用。下面提到了我的示例代码,请参考,我的要求是我想通过使用 viewmodel (ShowSenderIcon) 属性来隐藏 Frame。

我试过这个,

主页.xaml

<sync:SfListView
  x:Name="ListView"
  Grid.Row="0"
  Margin="0"
  AutoFitMode="Height"
  IsBusy="True"
  ItemSize="100"
  ItemSpacing="10"
  ItemTemplate="{StaticResource MessageTemplateSelector}"
  ItemsSource="{Binding Messages}"
  SelectionMode="None"
  VerticalOptions="Start"/>

IncomingViewCell.cs

<Frame
  x:Name="avatorFrame"
  CornerRadius="25"
  HasShadow="false"
  IsVisible="{Binding Path=BindingContext.ShowSenderIcon, Source={x:Reference ListView}, Mode=TwoWay}"
  OutlineColor="Gray"/>

MainPageViewModel.cs

private bool showSenderIcon = false;
public bool ShowSenderIcon
{
   get { return showSenderIcon; }
   set { showSenderIcon = value; OnPropertyChanged("ShowSenderIcon"); }
}

private ObservableCollection<Message> messagesList;
public ObservableCollection<Message> Messages
{
   get { return messagesList; }
   set { messagesList = value; }
}

public MainPageViewModel()
{
   Messages = new ObservableCollection<Message>();
   Messages.Add(new Message { Text = "Hi", IsIncoming = true, MessagDateTime = DateTime.Now, ShowTimeStamp = false });
}

标签: listviewxamarin.formsrelativesource

解决方案


推荐阅读