我在尝试将参数传递给命令时遇到了不好的时间。
我在XAML代码中有以下内容:
clone
在代码隐藏中,我像这样绑定:
<Button Text="{Binding ButtonText}" x:Name="btnCaptureNegotiation" BackgroundColor="#3276b1"
TextColor="White" Clicked="OnCaptureNegotiationClicked"
CommandParameter="{Binding Client, Path=cod_cte}" Command="{Binding LoadULastNegotiationCommand}" ></Button>
<StackLayout Orientation="Vertical" x:Name="captureLayout" IsVisible="{Binding IsVisible}">
<!-- more code -->
和NegotiationVM类:
public Client client;
public NegociationVM negotiation = new NegotiationVM();
public ClientItemPage(Client client)
{
this.client = client;
negotiation.Client = client; //STOP WORKING after adding this line
InitializeComponent();
captureLayout.BindingContext = negotiation;
btnCaptureNegotiation.BindingContext = negotiation;
}
private void OnCaptureNegotiationClicked(object sender, EventArgs args)
{
negotiation.IsVisible = !negotiation.IsVisible;
}
...
我发现该命令被触发并尝试从服务获取资源,但我得到404因为我发现它没有发送参数,我只是在异步void LoadLastNegotiationAsync(字符串值)方法中放置一个断点来查找。
因为它没有发送任何内容,所以在代码隐藏页面中,在公共构造函数中,我将Client设置为协商中的同名属性(NegotiationVM的实例)。正如评论所示,命令STOP工作,只是通过添加该行就不会被按钮触发。
绑定有什么问题?如何正确发送该客户端的字符串属性?
答案 0 :(得分:1)
如果Cliente
有一个名为cod_cte
的媒体资源。如此绑定:
CommandParameter="{Binding Cliente.cod_cte}"
如果该媒体资源的名称为Client
而不是Cliente
,请忽略e
上的Cliente
结尾:
CommandParameter="{Binding Client.cod_cte}"