我想将一个列表框绑定到一个简单的observablecollection
XAML - 将Listbox绑定到我的Observablecollection对象
<Window x:Class="ObservableCollection.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ObservableCollection"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListBox Name="Listbox1" ItemsSource="{Binding Path= Test, UpdateSourceTrigger=PropertyChanged}"></ListBox>
</Grid>
添加一些项目并尝试在列表框中显示数据
namespace ObservableCollection
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ObservableCollection<int> Test = new ObservableCollection<int>();
Listbox1.DataContext = Test;
Test.Add(1);
Test.Add(123232);
}
}
}
运行代码时数据不会显示。我在这做错了什么?
谢谢
答案 0 :(得分:1)
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
ObservableCollection<int> test = new ObservableCollection<int>();
test.Add(1);
test.Add(123232);
Test = test;
}
public ObservableCollection<int> Test { get; set; }
希望这可以解决问题。您的datacontext是IBindable消费者的外观。
答案 1 :(得分:1)
绑定表达式将包含属性路径,在这种情况下,路径必须引用public class ModelStateTagHelper : TagHelper
{
public ViewDataDictionary ViewData { get; set; }
public ModelStateDictionary ModelState { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
}
}
对象上存在的公共属性,否则它将省略路径,在这种情况下绑定将是自己DataContext
对象。
在您的示例中,您似乎混淆了两者。您可以将绑定配置为省略属性路径,但随后在XAML中提供属性路径。
您可以执行以下操作之一...
将属性添加到DataContext
类并保留XAML中的路径:
MainWindow
或者,您可以将XAML更改为直接使用public partial class MainWindow : Window
{
public ObservableCollection<int> Test { get; set; }
public MainWindow()
{
Test = new ObservableCollection<int>();
InitializeComponent();
DataContext = this;
Test.Add(1);
Test.Add(123232);
}
}
对象:
DataContext
请注意,您也不需要设置<Window x:Class="ObservableCollection.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ObservableCollection"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListBox Name="Listbox1" ItemsSource="{Binding}"/>
</Grid>
</Window>
属性。目标值永远不会改变,所以没有理由担心在这样的事件中如何更新源。