繁体   English   中英

如何在(Xamarin.Forms)XAML中使用IValueConverter转换完整的对象?

[英]How can I convert a complete object with IValueConverter in (Xamarin.Forms) XAML?

我已经在类X中实现了IValueConverter的方法。

public class X : IValueConverter {
 public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
       ...
 }
 ...
}

在XAML中,我有<Label Text="{Binding A, Converter={StaticResource TextConverter}, ConverterParameter=X}" />

这很好。 属性A(来自类Y的实例)被传递到我的类X的实例中的Convert方法。并且我可以进行转换。

public class Y {
 public string A { get; set; }
 public string B { get; set; }
}

现在,我想将完整的对象传递给Convert方法。 因此,如果我可以从我的convert方法中的类Y的实例访问属性A和B。

因此,我将XAML代码更改为<Label Text="{Binding ., Converter={StaticResource TextConverter}, ConverterParameter=X}" />但是没有用。 Convert方法中的参数值始终为null。

如何传递完整的对象(来自Y类型)? 或者,如果不可能,如何将多个属性传递给Convert方法? 在XAML中。

您可以传递class YProperty

首先,您需要像下面这样创建类的属性,

 public Y NewObject { get; set; }

然后,您必须使用NewObject

<Label Text="{Binding NewObject, Converter={StaticResource TextConverter}, ConverterParameter=X}" />

现在,在转换器中,您将可以使用NewObject获取对象并获取AB属性。

如何从列表中获取密钥<object>在 Firebase 在 Xamarin.Forms 中?<div id="text_translate"><p> I am programming in Xamarin.Forms, I am also using the FirebaseDatabase [dot] net Nuget I have the following method, in connection to my Firebase Realtime Database, which sends a List.</p><pre> public static async Task&lt;bool&gt; PostDetallePedido(List&lt;AgregarCarrito&gt; carrito) { try { var result = await firebase.Child("DetallePedidos").Child(Preferences.Get("idOrder", string.Empty)).PostAsync(carrito); result2 = result.Key; var keyTable = new KeyClass() { keyU = result2, orderId = Preferences.Get("idOrder", string.Empty) }; await firebase.Child("keyTable").Child(Preferences.Get("idOrder", string.Empty)).PostAsync(keyTable); return true; } catch (Exception e) { Debug.WriteLine($"Error:{e}"); return false; } }</pre><p> 我的数据库填充如下<a href="https://i.stack.imgur.com/pBxxr.png" rel="nofollow noreferrer">图1</a></p><p> 使用前面的代码,我可以获得唯一 ID,但我仍然不知道如何获取以自动增量方式生成的值</p><pre>-M7B6xMB19uodzf-C71H | -0 | -1</pre><p> <strong>编辑:</strong></p><pre> public static async Task&lt;List&lt;AgregarCarrito&gt;&gt; GetDetailByUser(int id) { try { var key = await GetKey(id); var value = (await firebase.Child("DetallePedidos").Child(Convert.ToString(id)).Child(key.keyU).OnceAsync&lt;AgregarCarrito&gt;()).Select(item =&gt; new AgregarCarrito { orderId = item.Object.orderId, ProductName = item.Object.ProductName, CustomerId = item.Object.CustomerId, Price = item.Object.Price, TotalAmount = item.Object.TotalAmount, ProductId = item.Object.ProductId, Qty = item.Object.Qty, imageUrl = item.Object.imageUrl, Valor = item.Object.Valor }).ToList(); return value; } catch (Exception e) { Debug.WriteLine($"Error:{e}"); return null; } }</pre><p> 我创建了一个使用 orderId 返回键值的方法,但我仍然无法访问列表的值,在这种情况下,这将是发送列表时以自动增量方式生成的对象</p><p><a href="https://i.stack.imgur.com/ENEas.png" rel="nofollow noreferrer">图 2</a></p></div></object>

[英]How can I get a key from a List <object> in Firebase in Xamarin.Forms?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用 XAML 在 Xamarin.Forms 的 ListView 中选择一个项目 如何使用Prism / DryIoC在Xamarin.Forms中解决IValueConverter中的依赖关系 如何创建可以通过xaml创建的自定义Xamarin.Forms组件? 如何在Xamarin.forms xaml中水平显示ListView中的项目? 如何调试 Xamarin.Forms XAML 如何在 Xamarin.Forms XAML 中绘制路径 如何使用 Z625CF3DD56A22D59D9169542CEE6B9 将 html 从 json 文件转换为 xaml 并将其显示 Xamarin.forms:在代码和XAML中使用自己的类对象 如何从列表中获取密钥<object>在 Firebase 在 Xamarin.Forms 中?<div id="text_translate"><p> I am programming in Xamarin.Forms, I am also using the FirebaseDatabase [dot] net Nuget I have the following method, in connection to my Firebase Realtime Database, which sends a List.</p><pre> public static async Task&lt;bool&gt; PostDetallePedido(List&lt;AgregarCarrito&gt; carrito) { try { var result = await firebase.Child("DetallePedidos").Child(Preferences.Get("idOrder", string.Empty)).PostAsync(carrito); result2 = result.Key; var keyTable = new KeyClass() { keyU = result2, orderId = Preferences.Get("idOrder", string.Empty) }; await firebase.Child("keyTable").Child(Preferences.Get("idOrder", string.Empty)).PostAsync(keyTable); return true; } catch (Exception e) { Debug.WriteLine($"Error:{e}"); return false; } }</pre><p> 我的数据库填充如下<a href="https://i.stack.imgur.com/pBxxr.png" rel="nofollow noreferrer">图1</a></p><p> 使用前面的代码,我可以获得唯一 ID,但我仍然不知道如何获取以自动增量方式生成的值</p><pre>-M7B6xMB19uodzf-C71H | -0 | -1</pre><p> <strong>编辑:</strong></p><pre> public static async Task&lt;List&lt;AgregarCarrito&gt;&gt; GetDetailByUser(int id) { try { var key = await GetKey(id); var value = (await firebase.Child("DetallePedidos").Child(Convert.ToString(id)).Child(key.keyU).OnceAsync&lt;AgregarCarrito&gt;()).Select(item =&gt; new AgregarCarrito { orderId = item.Object.orderId, ProductName = item.Object.ProductName, CustomerId = item.Object.CustomerId, Price = item.Object.Price, TotalAmount = item.Object.TotalAmount, ProductId = item.Object.ProductId, Qty = item.Object.Qty, imageUrl = item.Object.imageUrl, Valor = item.Object.Valor }).ToList(); return value; } catch (Exception e) { Debug.WriteLine($"Error:{e}"); return null; } }</pre><p> 我创建了一个使用 orderId 返回键值的方法,但我仍然无法访问列表的值,在这种情况下,这将是发送列表时以自动增量方式生成的对象</p><p><a href="https://i.stack.imgur.com/ENEas.png" rel="nofollow noreferrer">图 2</a></p></div></object> 如果我可以在C#文件中完成所有工作,为什么还要在Xamarin.Forms项目中使用Xaml标记?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM