我正在尝试在XAML中做一些简单的数据绑定,但它对我不起作用,我不知道为什么。
我有这个gridview
<GridView Name="test2">
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Header}" FontWeight="Bold" Style="{StaticResource ItemTextStyle}"/>
<TextBlock Text="{Binding Item}" FontWeight="Bold" Style="{StaticResource ItemTextStyle}"/>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
我正在尝试绑定。我试图在XMAL(它崩溃)和C#代码(没有发生)
中做到这一点在构造函数后面的代码我尝试这样做
public MyPage()
{
this.InitializeComponent();
Test t = new Test
{
Header = "Header 1",
Item = "Item 1",
};
List<Test> ts = new List<Test>();
ts.Add(t);
test2.DataContext = t;
}
我也尝试将它传递给一个集合。
正如我所说,我根本无法使用XMAL的方式来完成它。
答案 0 :(得分:1)
我相信您需要将GridView的ItemsSource
绑定到集合。
请尝试按照以下步骤操作:
在MyPage
上创建一个属性:public List<Test> Tests { get; set; }
将test2.DataContext = t;
替换为Tests = ts;
在您的XAML中,添加ItemsSource
属性,如下所示:
<GridView Name="test2" ItemsSource="{Binding Tests}">
答案 1 :(得分:1)
要使其发挥作用的最小值是添加以下行:
test2.ItemsSource = ts;
但是你以后可能会遇到一些问题。
DataContext
设置在这里没有多大意义,你说你要将单个项作为你绑定元素的上下文到网格。通常,我会说DataContext将是一个包含您的测试集合的类 - 例如,您的页面的DataContext,然后您将拥有
&lt; GridView Name =“test2”ItemsSource =“{Binding Tests}”&gt;
其中Tests
是您用作DataContext
的任何类的属性。您希望将DataContext设置为您在代码中设置的唯一内容,然后其他所有内容都来自绑定。
您可能希望使用List
代替ObservableCollection
,以便在从集合中添加和删除项目时自动通知数据绑定引擎。