我正在開發具有OrderClass 的 UWP 應用程式,該應用程式系結到 UWP UI。一切正常,然后它開始崩潰并Access Violation出現錯誤。我除錯并發現我TextBox在 XAML 中有一個系結到 Order Class 的屬性之一。[還有其他幾個以完全相同的方式來自同一個班級]。現在,當我通過計算值(它是一個浮點值)來更新 order 的屬性時,它被設定為在 UI 上更新,它可以很好地更新其他欄位,但是當我嘗試將這個欄位設定為記憶體沖突時崩潰。我有 10 個不同的欄位,它們在同一個函式中很好地系結到來自同一個物件的同一個 UI,
<TextBox x:Name="Margin" IsReadOnly="True" MinWidth="100" MaxWidth="120" MaxLength="10" Header="Margin (£)" Padding="5"
Margin="5,5,5,0" Text="{x:Bind ViewModel.SelectedOrder.Margin, Mode=TwoWay}" RelativePanel.Below="GridOrderItems"
RelativePanel.RightOf="Parcel" />
<TextBox x:Name="txtMarginP" IsReadOnly="True" MinWidth="100" MaxWidth="120" MaxLength="5" Header="Margin (%)" Padding="5"
Margin="5,5,5,0" Text="{x:Bind ViewModel.SelectedOrder.MarginP, Mode=TwoWay}"
RelativePanel.RightOf="Margin" RelativePanel.Below="GridOrderItems" />
上面的欄位沒有錯誤地通過,但欄位txtMarginP失敗并出現錯誤。
private async Task UpdateCart(float shippingprice = 0)
{
...
ViewModel.SelectedOrder.Margin = calculatedMargin;
ViewModel.SelectedOrder.MarginP = calculatedMarginP;
...
}
這是產生錯誤的函式呼叫。我計算保證金(as float)并通過。它曾經作業過。然后它開始失敗,而我在與它無關的其他螢屏上作業,并且訂單類和這個 UI 沒有改變。
Excat 錯誤是檔案中的Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.哪個Orderdetail.g.cs[由 XAML 編譯器自動生成。物件值得到正確設定。
我嘗試使用 DispatcherQueue 在我的物件中設定值,但它并沒有解決問題。由于沒有任何已知的變化,我相信某些編譯器設定在 Visual Studio 更新之一或其他內容中發生了變化。但我無法弄清楚,也無法除錯它來解決它。任何想法表示贊賞。謝謝你。
編輯---在一些代碼更改[以對稱順序重新排列呼叫]之后,我確定應用程式停止崩潰的情況,如果我將 ObservableCollection 更改為 List,但它不系結,并且即使專案不可見我改變我分配Grid.Itemsource
uj5u.com熱心網友回復:
事實證明,我在 my 中系結了一些combobox資料listview。因為當我們重新加載產品時,我必須多次系結該組合框。它導致XAML記憶體泄漏并發瘋。我必須從 ListView 中洗掉 ComboBox 并將其替換為 AutoSuggestBox 或 [取決于您的作業流程] 或限制您可以在組合框中加載的專案數量。我不能限制它們,因為我有大約 700 條記錄要系結......它們復制到 1400-2100 元素的 2-3 行要管理,所有人都可以觀察到。
重寫一些主要部分以避免它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443431.html
