wpf 将列表框项绑定到静态列表
wpf binding listbox items to a static list
我真的很努力。似乎有什么我想念的。使用 .net 4.5.
这是我的 XAML:
<Window x:Class="a.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:a"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListBox x:Name="myListBox" HorizontalAlignment="Left" Height="201" Margin="144,33,0,0" VerticalAlignment="Top" Width="115" ItemsSource="{Binding (local:myClass.myStaticList)}"/>
<Button Content="Button" HorizontalAlignment="Left" Height="48" Margin="282,247,0,0" VerticalAlignment="Top" Width="150" Click="Button_Click"/>
</Grid>
</Window>
下面是代码:
using System.Collections.ObjectModel;
using System.Windows;
namespace a
{
public class myClass
{
public static ObservableCollection<string> myStaticList { get; set; }
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
myListBox.Items.Add("aaa");
myListBox.Items.Add("bbb");
myListBox.Items.Add("ccc");
myListBox.Items.Add("ddd");
myListBox.Items.Add("eee");
myListBox.Items.Add("rrr");
}
private void Button_Click(object sender, RoutedEventArgs e)
{
<--- Breakpoint here
}
}
}
真的很简单。
该按钮仅用于暂停运行一个断点,并查看数据是否从myListBox
引入到myControl.myList
。
没有。 myList
保持为空。我错过了什么?
请帮忙!
TIA
您必须创建一个实例并将数据添加到您的 ObservableCollection
,而不是添加到绑定到它的 ListBox
。
MainWindow.cs :
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
myClass.myStaticList = new ObservableCollection<string>();
myClass.myStaticList.Add("aaa");
myClass.myStaticList.Add("bbb");
myClass.myStaticList.Add("ccc");
myClass.myStaticList.Add("ddd");
myClass.myStaticList.Add("eee");
myClass.myStaticList.Add("fff");
}
}
XAML :
<Grid>
<ListBox x:Name="ListBox1" Margin="0" ItemsSource="{Binding myStaticList}">
<ListBox.DataContext>
<local:myClass/>
</ListBox.DataContext>
</ListBox>
</Grid>
结果:
我真的很努力。似乎有什么我想念的。使用 .net 4.5.
这是我的 XAML:
<Window x:Class="a.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:a"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListBox x:Name="myListBox" HorizontalAlignment="Left" Height="201" Margin="144,33,0,0" VerticalAlignment="Top" Width="115" ItemsSource="{Binding (local:myClass.myStaticList)}"/>
<Button Content="Button" HorizontalAlignment="Left" Height="48" Margin="282,247,0,0" VerticalAlignment="Top" Width="150" Click="Button_Click"/>
</Grid>
</Window>
下面是代码:
using System.Collections.ObjectModel;
using System.Windows;
namespace a
{
public class myClass
{
public static ObservableCollection<string> myStaticList { get; set; }
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
myListBox.Items.Add("aaa");
myListBox.Items.Add("bbb");
myListBox.Items.Add("ccc");
myListBox.Items.Add("ddd");
myListBox.Items.Add("eee");
myListBox.Items.Add("rrr");
}
private void Button_Click(object sender, RoutedEventArgs e)
{
<--- Breakpoint here
}
}
}
真的很简单。
该按钮仅用于暂停运行一个断点,并查看数据是否从myListBox
引入到myControl.myList
。
没有。 myList
保持为空。我错过了什么?
请帮忙! TIA
您必须创建一个实例并将数据添加到您的 ObservableCollection
,而不是添加到绑定到它的 ListBox
。
MainWindow.cs :
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
myClass.myStaticList = new ObservableCollection<string>();
myClass.myStaticList.Add("aaa");
myClass.myStaticList.Add("bbb");
myClass.myStaticList.Add("ccc");
myClass.myStaticList.Add("ddd");
myClass.myStaticList.Add("eee");
myClass.myStaticList.Add("fff");
}
}
XAML :
<Grid>
<ListBox x:Name="ListBox1" Margin="0" ItemsSource="{Binding myStaticList}">
<ListBox.DataContext>
<local:myClass/>
</ListBox.DataContext>
</ListBox>
</Grid>
结果: