如何从文本框中获取文本

6

我使用以下代码创建一个条目:

 <Entry Placeholder="Reply..."/>

这是在ListView > ItemTemplate > DataTemplate > ViewCell内部。

问题是,当用户单击该ViewCell中的提交按钮时,需要获取该单元格中输入框的文本。我正在使用绑定来设置值,因此不知道如何获取文本。


请分享相关的ViewCell代码。该条目的文本默认模式为双向绑定,因此当您更改条目的文本时,绑定的对象也会随之更改。 - Diego Rafael Souza
@DiegoRafaelSouza https://gist.github.com/KingBlueSapphire/8e38edc468b02a087c3462f4cd5d5236 - Dan
@DiegoRafaelSouza 这就是我所有相关的代码。 - Dan
您可以通过访问ListViewItemsSource中的每个element来获取数据。这是最简洁的方法,您只需要获取相应的索引即可。 - mr5
2个回答

4

当您处理按钮的点击事件时,假设您正在使用事件处理程序来监听Clicked事件,那么您可以获取按钮的BindingContext(这也应该是整个ViewCell的相同BindingContext)。

如下所示:

public void OnButtonClicked(object sender, EventArgs e)
{
    // Assuming the List bound to the ListView contains "MyObject" objects,
    // for example List<MyObject>:

    var myObjectBoundToViewCell = (MyObject)((Button)sender).BindingContext;

    // and now use myObjectBoundToViewCell to get the text that is bound from the Entry
}

我没有将文本绑定到条目?这是我的代码 https://gist.github.com/KingBlueSapphire/8e38edc468b02a087c3462f4cd5d5236 我找不到任何方法来获取该条目 - Dan
我在“myObjectBoundToViewCell”中找不到与“Entry”相关的内容。 - Dan
也许你需要在<Entry>中添加Text="{Binding PostReply}"。虽然我不确定那是否是你想要使用的字段。但是你至少需要将Entry的Text属性绑定到MessageObject中的某个属性。 - sme

3
看到你的代码,我可以理解为什么@sme的答案不适合你。你对bindingsxaml的使用非常混乱和糟糕,我相信现在转向MVVM是你能做的最好的事情。
但是,如果你坚持保持现有的代码,你可以将回复文本绑定到输入框的文本属性,像这样:
<Entry Placeholder="Reply..." 
       HorizontalOptions="FillAndExpand" 
       Margin="0, 0, 0, 5"
       Text="{Binding Reply}"/>

因此,由于您将整个MessageObject对象发送到tap命令,您可以通过以下方式获取文本内容:
public void ReplyCommandClick(string id, object msg)
{
    MessageObject message = (MessageObject) msg;
    message.ShowReplyField = message.ShowReplyField ? false : true;
    //var viewcell = (MessageObject)((Label)msg).BindingContext;
    //viewcell. // There were no options for the entry
    var reply = msg.Reply;
    SendReply(id, msg, reply);
} 

通常情况下,当您使用绑定到“ViewCell”的命令时,实际的模型就是唯一需要的。或者,当为每个单元格添加事件处理程序时,常见的事件参数(发送器、事件)也是必需的。 - mr5
@mr5 对不起,我无法理解您的意思。我的英语太差了。 - Diego Rafael Souza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接