【发布时间】:2013-04-25 17:13:58
【问题描述】:
我正在尝试在 gridview 中更改一个框的颜色(它的 ItemTemplates 有 100 个绿色框)。
首先,我创建了一个列表(键入为我的类),并将所有项目添加到列表中,并将列表添加到我的 gridview 源中:
grid1.ItemsSource = boxlist;
之后,我为 gridview 上的项目单击添加了单击事件。我希望当我点击一个项目时,这个项目的颜色会改变。所以我编辑了列表:
int id = ((Boxes)e.ClickedItem).id;
boxlist[id].color = "DarkRed";
grid1.ItemsSource = boxlist;
我试过它来改变点击项目的颜色,但它不起作用。列表项的颜色正在成功更改,但 gridview 没有接受它。但我希望 gridview 采用这个新来源。我该如何解决这个问题?
我的班级:
class Boxes
{
public int id { get; set; }
public string color { get; set; }
}
GridView 的 XAML
<GridView x:Name="grid1" HorizontalAlignment="Left" Margin="354,41,0,0" VerticalAlignment="Top" Width="800" Height="650" SelectionMode="None" IsItemClickEnabled="True" ItemClick="grid1_ItemClick">
<GridView.Resources>
<DataTemplate x:Key="DataTemplate1">
<Grid Height="50" Width="50">
<Rectangle x:Name="rect1" Width="50" Height="50" Fill="{Binding color}" Tag="{Binding id}"/>
</Grid>
</DataTemplate>
</GridView.Resources>
<GridView.ItemTemplate>
<StaticResource ResourceKey="DataTemplate1"/>
</GridView.ItemTemplate>
</GridView>
【问题讨论】:
-
您是在 WPF 中执行此操作吗?赢表格? - 您能否提供您正在使用的 ItemTemplate 和 Gridview XAML? - 您需要使用 ObservableCollection 而不是 List,以便 UI 将收到 Collection 的更改通知。
-
我在 XAML 中做。
-
我将 List 更改为 ObservableCollection 但它具有相同的功能。仍然无法更新。
-
请给我们看 xaml 代码。
-
我添加了gridview的xaml代码。
标签: c# xaml gridview itemsource