【问题标题】:How to bind list view with chat data in Xamarin.forms xaml如何在 Xamarin.forms xaml 中将列表视图与聊天数据绑定
【发布时间】:2018-03-26 22:14:00
【问题描述】:

我无法绑定 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; }
            }
        }

我正在使用聊天应用程序。也无法绑定本地消息

【问题讨论】:

    标签: xaml xamarin.forms


    【解决方案1】:

    您的 TextContainer 字段应该是公共的并且是一个属性。

    改变这个:

    private ObservableCollection&lt;MessageText&gt; TextContainer = new ObservableCollection&lt;MessageText&gt;();

    收件人:

    public ObservableCollection&lt;MessageText&gt; TextContainer { get; set; } = new ObservableCollection&lt;MessageText&gt;();

    注意我是如何将private 更改为public 并添加{ get; set; } 以表明这是一个具有自动getter 和setter 的属性。

    有关数据绑定的更多信息,请访问this 的新 Microsoft 文档页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-14
      • 2016-10-27
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多