Viewcell绑定上下文不适用于Xamarin形式

时间:2018-12-31 11:27:05

标签: listview xamarin.forms relativesource

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

我已经尝试过了

MainPage.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 });
}

0 个答案:

没有答案