簡體   English   中英

為什么我的ListView沒有綁定到ItemSource?

[英]Why is my ListView not binding to the ItemSource?

所以我有一個非常簡單的UI設計,帶有ListView和一個按鈕。 我想在點擊按鈕時填充列表視圖。

 <Grid>
        <Button Click="ButtonBase_OnClick" Content="Button" HorizontalAlignment="Left" Margin="349,259,0,0" VerticalAlignment="Top" Width="75"/>

        <ListView Margin="10,10,10,202" Name="lvUsers" ItemsSource="{Binding SomeData.Users}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
                </GridView>
            </ListView.View>
        </ListView>

    </Grid>

我已綁定ListView控件的屬性的ItemSource是SomeData.Users這是一個ObservableCollectiuon時,它的更新,應通知用戶界面,添加,刪除或更新。 然后在我有列的下面我將DisplayMember綁定到observable集合的Name屬性。

這是SomeData

public class SomeData
    {
        public static ObservableCollection<User> Users { get; } = new ObservableCollection<User>();

        public static void Populate()
        {
            Users.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });
            Users.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });
            Users.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" });
        }
    }

    public class User
    {
        public string Name { get; set; }

        public int Age { get; set; }

        public string Mail { get; set; }
    }

這是MainWindow.cs

public MainWindow()
        {
            InitializeComponent();
        }

        private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            SomeData.Populate();
        }

afaik我不應該在任何地方設置DataContext ..對嗎?

問題是您的Binding語法錯誤。 您正在嘗試綁定到靜態屬性,請嘗試以下操作:

"{Binding Source={x:Static YourNameSpace:SomeData.Users}}"

或者,如果您使用的是WPF 4.5或更高版本:

"{Binding Path=(YourNameSpace:SomeData.Users)}"

一個提示:像你這樣的問題總是試着看看你的輸出窗口並查找System.Window.Data Error ,這些通常是綁定表達式無法解析時發生的綁定異常。 在你的情況下,我相信你會發現這個例外。

您必須為xaml設置DataContext。

將datacontext添加到mainwindow

public MainWindow()
{
       InitializeComponent();
       this.DataContext = new SomeData();
}

並將xaml ItemsSource綁定更改為

ItemsSource="{Binding Users}"

暫無
暫無

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

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