我有一个场景,其中有多个数据列表,这些数据列表是通过循环方式以编程方式构造的。我想在用户界面上并排显示这些列表。
我设置了一个包含字符串的ObservableCollections列表。我正在使用ListBox绑定到列表的方式,如下所示:Bind textbox list inside listbox in wpf 与此XMAL:
<ListBox Name="ListTwo" ItemsSource="{Binding Source=obs}" ... >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="TextBoxList" Text="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
问题是如何将特定列表框绑定到列表中的特定索引?具体来说,我希望第0个列表绑定到List [0],第1个列表绑定到List [1],等等。
因此采纳了以下建议,并尝试将其归类。这就是我得到的,但是UI没有显示更新。
XAML:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
x:Class="NS.ClassMainWindow"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Window.Resources>
<ListView Grid.Row="1" Grid.Column="0" x:Name="RawBox" ItemsSource="{Binding Foo.Raw}" Background="LightGray" BorderThickness="2" BorderBrush="Black">
<ListView.ItemTemplate>
<DataTemplate>
<TextBox Name="RawItemsTextBoxList" Text="{Binding}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
DataClass:
public class FooClass
{
public List<ObservableCollection<string>> items;
public ObservableCollection<string> Raw { get => this.items[0]; set => this.items[0] = value; }
public ObservableCollection<string> Tier1 { get => this.items[1]; set => this.items[1] = value; }
public ObservableCollection<string> Tier2 { get => this.items[2]; set => this.items[2] = value; }
public ObservableCollection<string> Tier3 { get => this.items[3]; set => this.items[3] = value; }
public ObservableCollection<string> Tier4 { get => this.items[4]; set => this.items[4] = value; }
public FooClass()
{
this.items = new List<ObservableCollection<string>>();
for (int i = 0; i <= 4; i++)
{
this.items.Add(new ObservableCollection<string>());
}
}
}
和分配:
this.Foo.Raw = new ObservableCollection<string>(itemNames); // itemNames is a List<string>
我很明显很想念某些东西,但是我一生都看不到。对WPF来说还算是新手,所以这可能是菜鸟。
答案 0 :(得分:0)
如果您将DataContext
设置为FooClass
的实例,然后将Raw
属性设置为非空集合,如下所示:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var foo = new FooClass();
foo.Raw = new ObservableCollection<string>(new List<string> { "1", "2", "3" });
DataContext = foo;
}
}
...您应该看到提供绑定到Raw
属性的字符串,并将Mode
的{{1}}设置为TextBox
或{{1} }:
OneTime