在代码中我可以执行“listView.ItemsSource = testlist”但是如何在XAML中执行相同操作?
My Window类有:
List<string> testlist = new List<string>();
在构造函数中我有:
listView.ItemsSource = testlist;
XAML是:
<ListView x:Name="listView" Margin="0" />
如果我添加到testlist然后我得到列表,但我无法弄清楚在XAML中分配ItemsSource的语法是什么。换句话说,我想知道如何在XAML中而不是在代码中分配ItemsSource。
我的印象是XAML必须使一切变得复杂。
我确信已有答案,但我找不到任何答案。我看了很多问题和文章。所有的问题和文章都是关于更复杂的要求,或者只是部分的,即使样本小到这一点,也不会显示所有的部分。
我真正想做的是为ListView创建一个带有TextBox的模板,但我希望至少能够做到这一点。
澄清:我试图在代码和现有的类(如List)中进行所有绑定,而不创建额外的类只是为了保存字符串数组(如果可能的话)。我想知道最简单的解决方案是什么。
以下是完整的MainWindow代码:
public partial class MainWindow : Window
{
List<string> testlist = new List<string>();
public MainWindow()
{
InitializeComponent();
testlist.Add("One");
testlist.Add("Two");
testlist.Add("Three");
}
}
以下是除Window标签之外的XAML:
<Grid>
<ListView x:Name="listView" Margin="0" />
</Grid>
答案 0 :(得分:2)
您可以通过在绑定上指定RelativeSource来绑定到代码隐藏中的属性。检查this。
RelativeSource={RelativeSource Self}
在您的情况下,您可以在后面的代码和以下xaml中创建属性测试列表。
<强>代码隐藏强>
public ObservableCollection<string> testlist { get; set; } = new ObservableCollection<string>();
<强> XAML 强>
<Window ...
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid >
<ListView ItemsSource="{Binding testlist}"/>
</Grid>
</Window>
答案 1 :(得分:1)
答案 2 :(得分:1)
我无法弄清楚分配ItemsSource的语法是什么 在XAML。
您可以按照定义在ItemsSource
文件中设置Xaml
。
<ListView x:Name="listView" Margin="0" ItemsSource="{Binding}">
并在Xaml.cs
文件中设置DataContext
。
public MainWindow()
{
InitializeComponent();
this.DataContext = list; // set your DataContext
}
上面的事情可能有用,但我建议探索MVVM
(现代UI开发平台的模式),并按照你提到的(在问题中)你可以在网上找到大量的例子。