I have a listview and many viewcells. The Itemstemplate are selected by using MessageTemplateSelector class. In MainViewModel there is a Messages collection. I have bind the Message collection into the listview. It's working fine. But the viewcell UI element is binded with viewmodel property named as ShowSenderIcon, that is not binded into the UI element. I have tried many suggestion. But it is not working. My sample code is mentioned below, Please refer, My requirement is i want to hide the Frame by using viewmodel (ShowSenderIcon) property.
I have tried this,
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 });
}