想要使用共享相同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
只是显示为文本而非按钮。我做错了什么?
答案 0 :(得分:1)
不是在Xaml中设置项目而是将它们绑定到集合。使用DataTemplate的绑定,您需要一个具有Name和NumberCommand属性的类:
class MyData
{
public string Name { get; set;}
public ICommand MyCommand { get; set; }
}
然后创建数据集合:
ObservableCollection<MyData> data;
并将其绑定到GridView。为简单起见,我在这里为网格命名并直接设置ItemsSource。这对你的场景来说可能已经足够了。您显然也想要连接Command,对于更复杂的场景,您可以通过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;
}