protected override void InitBindings()
        {
            Bindings.Add(
                this.SetBinding(() => ViewModel.AreNotificationsEnabled,
                                () => EnableNotificationsCheckbox.Checked, BindingMode.TwoWay));

            Bindings.Add(
                this.SetBinding(() => ViewModel.UseHex,
                                () => RepresentationSwitch.Checked, BindingMode.TwoWay));

            Bindings.Add(this.SetBinding(() => ViewModel.Characteristic).WhenSourceChanges(() =>
            {
                if (ViewModel.Characteristic == null)
                {
                    return;
                }

                WriteInput.Visibility = ViewModel.Characteristic.CanWrite ? ViewStates.Visible : ViewStates.Gone;
                EnableNotificationsCheckbox.Visibility = ViewModel.Characteristic.CanUpdate && !_readCharacteristic ? ViewStates.Visible : ViewStates.Gone;
                PullToReadLabel.Visibility             = ViewModel.Characteristic.CanRead ? ViewStates.Visible : ViewStates.Gone;
                RefreshLayout.Enabled       = ViewModel.Characteristic.CanRead;
                RefreshLayout.ScrollingView = ChatRecyclerView;
                RefreshLayout.Refresh      += RefreshLayoutOnRefresh;
            }));

            ChatRecyclerView.SetAdapter(
                new ObservableRecyclerAdapterWithMultipleViewTypes <IDeviceCharacteristicChatListItem,
                                                                    RecyclerView.ViewHolder>(
                    new Dictionary <Type, ObservableRecyclerAdapterWithMultipleViewTypes <
                                        IDeviceCharacteristicChatListItem, RecyclerView.ViewHolder> .IItemEntry>
            {
                {
                    typeof(SentCharacteristicMessageViewModel),
                    new ObservableRecyclerAdapterWithMultipleViewTypes <IDeviceCharacteristicChatListItem,
                                                                        RecyclerView.ViewHolder> .SpecializedItemEntry <SentCharacteristicMessageViewModel,
                                                                                                                        SentMessageHolder>
                    {
                        ItemTemplate = type =>
                                       LayoutInflater.Inflate(Resource.Layout.item_characteristic_message_sent, null),
                        SpecializedDataTemplate = SentDataTemplate
                    }
                },
                {
                    typeof(ReceivedCharacteristicMessageViewModel),
                    new ObservableRecyclerAdapterWithMultipleViewTypes <IDeviceCharacteristicChatListItem,
                                                                        RecyclerView.ViewHolder> .SpecializedItemEntry <ReceivedCharacteristicMessageViewModel,
                                                                                                                        ReceivedMessageHolder>
                    {
                        ItemTemplate = type =>
                                       LayoutInflater.Inflate(Resource.Layout.item_characteristic_message_received, null),
                        SpecializedDataTemplate = ReceivedDataTemplate
                    }
                }
            },
                    ViewModel.ChatMessages)
            {
                StretchContentHorizonatally = true
            });
            ChatRecyclerView.SetLayoutManager(new LinearLayoutManager(Activity, LinearLayoutManager.Vertical, true)
            {
                StackFromEnd  = true,
                ReverseLayout = true
            });

            SendButton.SetOnClickListener(new OnClickListener(view =>
            {
                ViewModel.SendMessageCommand.Execute(CommandInput.Text);
            }));
        }