簡體   English   中英

類型對象的UWP依賴屬性未綁定到ObservableCollection

[英]UWP Dependency Property of type object not binding to ObservableCollection

我有一個帶有RadDataGrid和ListView的自定義UserControl。 UserControl有一個ItemsSource,在對數據進行一些內部操作之后,該ItemsSource填充RadDataGrid和ListView的ItemsSource屬性。

填充后,我想將RadDataGrid的ItemsSource屬性公開給我的視圖模型。

為此,我在文件后面的代碼中創建一個依賴項屬性“ GridItemsSource”,並在UserControl的XAML文件中使用TwoWay綁定,如下所示:

public static readonly DependencyProperty GridItemsSourceProperty = DependencyProperty.Register(nameof(GridItemsSource), typeof(object), typeof(ListViewGrid), new PropertyMetadata(null, OnItemsSourceChanged));
public object GridItemsSource
{
    get { return GetValue(GridItemsSourceProperty); }
    set { SetValue(GridItemsSourceProperty, value); }
}

和:

<grid:RadDataGrid x:Name="DataGrid"
                          Grid.Column="1"
                          UserGroupMode="Disabled"
                          AutoGenerateColumns="False"
                          ItemsSource="{x:Bind GridItemsSource, Mode=TwoWay}"
                          SelectedItem="{x:Bind SelectedGridItem, Mode=TwoWay}">
</grid:RadDataGrid>

在我的頁面中,我還具有GridItemsSource屬性的TwoWay綁定,如下所示:

<userControls:ListViewGrid x:Name="ListViewGrid"
                           GridItemsSource="{x:Bind ViewModel.FormItems, Mode=TwoWay}"
                           SelectedGridItem="{x:Bind ViewModel.SelectedFormItem, Mode=TwoWay}"/>

在我的ViewModel中:

private ObservableCollection<FormItem> formItems;
public ObservableCollection<FormItem> FormItems
{
    get => formItems;
    set => Set(ref formItems, value);
}

這對於單獨的“ SelectedGridItem”效果很好,但是當我綁定“ GridItemsSource”時,程序將在Dependency屬性的設置器處停止,並出現以下運行時錯誤:

Unable to cast object of type 'System.Collections.Generic.List1[System.Object]' to type 'System.Collections.ObjectModel.ObservableCollection1[Models.FormItem]

為什么會出現此錯誤? 我在其他控件中看到的所有ItemsSource屬性都是對象類型,並且綁定到ObservableCollection並不是問題。

我認為問題在於您在ItemsSource屬性上使用Mode=TwoWay 控件應將ItemsSource屬性設置為“只讀”。 嘗試僅將GridItemsSourceItemsSource屬性設置為Mode=OneWay ,這樣系統就不會嘗試反映對視圖模型的任何更改,而這可能會導致轉換問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM