簡體   English   中英

綁定可觀察的集合

[英]Bind Observable collection

我將如何在XAML中進行綁定?

我希望在ListView調用方法時都使用可觀察的集合來填充ListView ,該方法將通過另一個控件上的drop事件。 該集合也被添加,但是ListView不會填充。

我沒有使用WPF很久了,所以任何見識都將是很棒的。

namespaceA 
{
    public class SomeClassA
    {
        public string FirstName { get; set; }
    }

    public class SomeClassB
    {
        public void MethodA()
        {
            ObservableCollection<SomeClassA> Name_Col = new ObservableCollection<SomeClassA>();
            Name_col.Add(new SomeClassA { FirstName = "SomeValue" });
        }
    }
}

XAML:

 <ObjectDataProvider
    x:Key="Viewmodel"
    ObjectType="{x:Type Local:NamespaceA}"/>

 <ListView DataContext="{StaticResource Viewmodel}"
    Height="396" 
    HorizontalAlignment="Left" 
    Margin="766,67,0,0" 
    Name="listView1" 
    VerticalAlignment="Top" 
    Width="260" 
    ItemsSource="{Binding Name_col}" />

綁定中唯一可以訪問的是publicinternal不起作用)屬性和public類的索引器。

而且無論如何, 在方法內部聲明的變量將永遠無法從該方法外部訪問。 這是過去使用腳本語言的人們經常犯的錯誤。 要訪問某個方法外部(或另一個內部)的內容,必須在該方法外部聲明該內容。

一個有用的提示:Visual Studio的“ Output窗口是跟蹤綁定錯誤的非常有用的工具。

附帶說明:綁定區分大小寫。 即使您的代碼遵循上述規則,WPF仍將找不到綁定源,因為您的綁定路徑是Name_col ,但是屬性的名稱是Name_Col

您的代碼有很多錯誤

首先,您的DataContext指向名稱空間,而不是對象。 將其更改為對象的實例。

<ObjectDataProvider x:Key="Viewmodel" ObjectType="{x:Type local:SomeClassB}"/>

要么

<local:SomeClassB x:Key="Viewmodel" />

其次,您的ObservableCollection不是公共屬性,因此您的View無法看到或訪問它。

public class SomeClassB
{
    public ObservableCollection<SomeClassA> Name_Col { get; set; }

    public void MethodA()
    {
        Name_Col = new ObservableCollection<SomeClassA>();
        Name_col.Add(new SomeClassA { FirstName = "SomeValue" });
    }
}

最后,WPF綁定區分大小寫,因此您需要修復ItemsSource綁定以使用正確的大小寫

<ListView ... 
    ItemsSource="{Binding Name_Col}" />

假設粘貼了此代碼,則您的綁定正在查看不存在的屬性。 嘗試在綁定中將“ c”大寫。 Name_col-> Name_Col

暫無
暫無

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

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