簡體   English   中英

如何在Xamarin.forms Xaml中將列表視圖與聊天數據綁定

[英]How to bind list view with chat data in Xamarin.forms xaml

我無法綁定ListView:使用設計背后的代碼時,我可以成功綁定列表視圖,但是我想在XAML中更改設計,但是現在我無法綁定列表視圖,數據成功發送到服務器,但無法綁定listbiew 。

XAML: <ListView Grid.Row="0" ItemsSource="{Binding TextContainer}" x:Name="ListView" 
                            SeparatorVisibility="None">
                                <ListView.ItemTemplate>
                                    <DataTemplate>
                                        <ViewCell>
                                            <StackLayout VerticalOptions="FillAndExpand" Orientation="Horizontal" Padding="10">
                                                <Label Text="{Binding Text}" YAlign="Center" Font="Large" TextColor="Red" />
                                             </StackLayout>
                                        </ViewCell>
                                        </DataTemplate>
                                </ListView.ItemTemplate>
                            </ListView>


            CS: 
             private ObservableCollection<MessageText> TextContainer = new ObservableCollection<MessageText>();
                    public ListView listView = new ListView();

                    public event OnMessageSent MessageSent;
                    public delegate void OnMessageSent(string message);
          public Chat()
                {
          MessageSent += (message) =>
                    {
                       var text= "Me: " + message;

                        TextContainer.Add(new MessageText { Text = text });


                        SignalRClient.SendMessage(UsernameTextbox.Text, message);
                    };

                    SignalRClient.OnMessageReceived += (username, message) => {

                        if (username == UsernameTextbox.Text)
                        {

                        }
                        else
                        {

                            var cc = username + ": " + message;
                            TextContainer.Add(new MessageText { Text = cc });
                        }
                    };


                }
                public void AddText(string text)
                {
                    TextContainer.Add(new MessageText { Text = text });
                }
                private void EnterButton_Clicked(object sender, EventArgs e)
                {
                    try
                    {
                        var messageSent = MessageSent;
                        if (messageSent != null)
                            messageSent(Messagebox.Text);

                        Messagebox.Text = string.Empty;
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex);
                    }
                }
            }

            public class MessageText
            {
                public string Text { get; set; }
            }
        }

我正在使用聊天應用程序。 並且也無法綁定本地消息

您的TextContainer字段應該是公共屬性。

更改此:

private ObservableCollection<MessageText> TextContainer = new ObservableCollection<MessageText>();

至:

public ObservableCollection<MessageText> TextContainer { get; set; } = new ObservableCollection<MessageText>();

請注意,我是如何將private更改為public並添加{ get; set; } { get; set; } { get; set; }表示這是一個具有自動獲取器和設置器的屬性。

有關數據綁定的更多信息可以在新的微軟文檔頁中找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM