是否有将代码的C#部分中创建的数组绑定到ListBox以便它在设计时显示?
像
这样的东西XAML
<ListBox ItemsSource="{Binding MyStrings}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text={Binding} />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
C#
public string[] MyStrings = new string[] {"A", "B", "C"};
答案 0 :(得分:1)
运行时DataContext也可以在设计模式下工作。您需要做的就是在单独的ViewModel 中提取代码(这也是MVVM模式推荐的内容),并在那里声明了数组,并简单地将DataContext绑定到ViewModel。
<强> XAML: 强>
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
<StackPanel>
<ListBox ItemsSource="{Binding MyStrings}"/>
</StackPanel>
</Window>
<强> 视图模型: 强>
public class MainWindowViewModel
{
string[] myStrings = new string[] { "A", "B", "C" };
public string[] MyStrings
{
get
{
return myStrings;
}
}
}
<强> 设计 强>
答案 1 :(得分:0)
首先需要创建一个自定义类型来存储数据作为其属性,如下所示:
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
然后使用类型创建一个列表,如下所示:
List<Student> list1 = new List<Student>()
{
new Student() { Name = "Bob", Age = 12 },
new Student() { Name = "John", Age = 30 },
};
<\ n>在XMAL中,执行此操作:
<Grid>
<ListBox x:Name="myList" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="2">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Age}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
最后在运行时,初始myList DataContext如下:
myList.DataContext = list1;