2013-05-03 78 views
0

我正在创建一个将ObservableCollection连接到ListBox的简单程序。我写道:WPF - Observable集合绑定错误

public ObservableCollection<int> Values { get; set; } 

public MainWindow() 
{ 
    InitializeComponent(); 
    Values = new ObservableCollection<int>(); 
    Values.Add(1); 
    DataContext = this; 
} 

然后我创建按钮,并写道:

public Button1_Clicke(object sender, RoutedEventArgs e) 
{ 
    Values.Add(2); 
} 

XMAL:

<ListBox x:Name="list" ItemsSource="{Binding Path=Values}"/> 

当窗口我能看到开幕'1'值。 但是,当我点击按钮,列表框剂量更新项目。哪里不对?

+0

这应该工作。使用Values.Count添加消息框到点击事件 – Paparazzi 2013-05-03 20:13:41

+0

大小越来越大,但列表框不更新 – user2348001 2013-05-04 09:03:21

+0

如果您需要帮助,您将需要发布所有代码。这应该工作。 – Paparazzi 2013-05-05 20:25:43

回答

2

你可以试试这个:

<ListBox x:Name="list" ItemsSource="{Binding Path=Values}"/> 

编辑: 我已经作出如下一个简单的示例:

<Window x:Class="WpfApplication1.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window1" Height="300" Width="300"> 
    <StackPanel> 

     <ListBox x:Name="list" ItemsSource="{Binding Path=Values}"/> 
     <Button Click="Button_Click" Content="Test"></Button> 
    </StackPanel> 

</Window> 

后面的代码(Window1.xaml.cs)

using System.Collections.ObjectModel; 

/// <summary> 
/// Interaction logic for Window1.xaml 
/// </summary> 
public partial class Window1 : Window 
{ 
    public ObservableCollection<int> Values { get; set; } 

    public Window1() 
    { 
     InitializeComponent(); 

     Values = new ObservableCollection<int>(); 
     Values.Add(1); 
     DataContext = this; 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     Values.Add(2); 
    } 
} 

它按预期工作。所以根据你的意见,下面为什么你不尝试删除所有的转换器,以确保它的正确与否。

+0

对不起,错误的列表框:P – user2348001 2013-05-03 18:39:17

+0

那么,你确定按钮点击调用正确的事件,你已经发布在这里? – 2013-05-03 18:41:22

+0

是的,我确定。 – user2348001 2013-05-03 18:43:08