簡體   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