如何用按钮填充 GridView?
How to populate GridView with buttons?
想要用共享相同 ICommand 的按钮填充 gridview。
到目前为止我有这个:
<DataTemplate x:Key="DataTemplate1">
<Button Content="{Binding Name}"
Command="{Binding NumberCommand}">
</Button>
</DataTemplate>
<GridView SelectionMode="None"
ItemContainerStyle="{StaticResource GridViewItemStyle1}"
ItemTemplate="{StaticResource DataTemplate1}">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal"
MaximumRowsOrColumns="3">
</WrapGrid>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridViewItem Content="1"></GridViewItem>
<GridViewItem Content="2"></GridViewItem>
<GridViewItem Content="3"></GridViewItem>
<GridViewItem Content="4"></GridViewItem>
<GridViewItem Content="5"></GridViewItem>
<GridViewItem Content="6"></GridViewItem>
<GridViewItem Content="7"></GridViewItem>
<GridViewItem Content="8"></GridViewItem>
<GridViewItem Content="9"></GridViewItem>
</GridView>
问题是 GridViewItems
只是显示为文本而不是按钮。我做错了什么?
而不是设置 Xaml 中的项目,将它们绑定到一个集合。使用 DataTemplate 的绑定,您需要 class 具有 Name 和 NumberCommand 属性:
class MyData
{
public string Name { get; set;}
public ICommand MyCommand { get; set; }
}
然后创建数据集合:
ObservableCollection<MyData> data;
并将其绑定到 GridView。为简单起见,我在这里为 Grid 命名并直接设置 ItemsSource。对于您的场景,这可能已经足够好了。您显然也想连接命令,对于更复杂的场景,您可以通过 CollectionViewSource 进行绑定。
public MainPage()
{
this.InitializeComponent();
data = new ObservableCollection<MyData>();
for (int i=1;i<10;i++)
{
data.Add(new MyData() { Name = i.ToString() });
}
myGrid.ItemsSource = data;
}
想要用共享相同 ICommand 的按钮填充 gridview。
到目前为止我有这个:
<DataTemplate x:Key="DataTemplate1">
<Button Content="{Binding Name}"
Command="{Binding NumberCommand}">
</Button>
</DataTemplate>
<GridView SelectionMode="None"
ItemContainerStyle="{StaticResource GridViewItemStyle1}"
ItemTemplate="{StaticResource DataTemplate1}">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal"
MaximumRowsOrColumns="3">
</WrapGrid>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridViewItem Content="1"></GridViewItem>
<GridViewItem Content="2"></GridViewItem>
<GridViewItem Content="3"></GridViewItem>
<GridViewItem Content="4"></GridViewItem>
<GridViewItem Content="5"></GridViewItem>
<GridViewItem Content="6"></GridViewItem>
<GridViewItem Content="7"></GridViewItem>
<GridViewItem Content="8"></GridViewItem>
<GridViewItem Content="9"></GridViewItem>
</GridView>
问题是 GridViewItems
只是显示为文本而不是按钮。我做错了什么?
而不是设置 Xaml 中的项目,将它们绑定到一个集合。使用 DataTemplate 的绑定,您需要 class 具有 Name 和 NumberCommand 属性:
class MyData
{
public string Name { get; set;}
public ICommand MyCommand { get; set; }
}
然后创建数据集合:
ObservableCollection<MyData> data;
并将其绑定到 GridView。为简单起见,我在这里为 Grid 命名并直接设置 ItemsSource。对于您的场景,这可能已经足够好了。您显然也想连接命令,对于更复杂的场景,您可以通过 CollectionViewSource 进行绑定。
public MainPage()
{
this.InitializeComponent();
data = new ObservableCollection<MyData>();
for (int i=1;i<10;i++)
{
data.Add(new MyData() { Name = i.ToString() });
}
myGrid.ItemsSource = data;
}