gpt4 book ai didi

c# - 来自 json 的 XAML GridView 设计时数据

转载 作者:行者123 更新时间:2023-11-30 17:37:51 25 4
gpt4 key购买 nike

将设计时数据绑定(bind)到 GridView 有多容易?

我将 json 绑定(bind)到 Grid.TextBlock 但 Grid.GridView.DataTemplate 不显示数据

Xaml

<Page
mc:Ignorable="d"
d:DataContext="{d:DesignData Source=/SampleData/sampledata.json}"
>

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel
Grid.Row="0" Grid.Column="0"
<TextBlock Text="{Binding Name}"/>
</StackPanel>
<GridView
Grid.Row="1" Grid.Column="0"
ItemsSource="{Binding ListItems}"
>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Vertical"></WrapGrid>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Width="50" Height="50" Text="{Binding Name}"></TextBlock>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Grid>

JSON

{
"Name": "Root Name",
"ListItems": [
{ "Name": "Title 1" },
{ "Name": "Title 2" },
{ "Name": "Title 3" }
]
}

结果

enter image description here

最佳答案

这是一个建议,而不是一个答案。 JSON 设计数据似乎仅受 Windows 8.1 项目支持。我建议另一种解决方案,使用提供所需属性的模拟类。在您的情况下,您可以使用 ListItems 属性创建一个 SampleData 类:

public class ListItem
{
public string Name { get; set; }
}

public class SampleData
{
//Parameterless constructor needed!
public SampleData()
{
ListItems = new ObservableCollection<ListItem>();
ListItems.Add(new ListItem { Name = "foo" });
ListItems.Add(new ListItem { Name = "bar" });
}

public ObservableCollection<ListItem> ListItems { get; set; }
}

SampleData 类需要有一个无参数的构造函数!

在 XAML 文件中只需添加设计时数据上下文(local 标记引用 SampleData 类程序集;

...
xmlns:local="clr-namespace:WpfDesignDataTest"
...

<ListView Grid.Row="1" Grid.Column="0" ItemsSource="{Binding ListItems}" d:DataContext="{d:DesignInstance Type=local:SampleData, IsDesignTimeCreatable=True}">

关于c# - 来自 json 的 XAML GridView 设计时数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37360801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com