0

我正在尝试在 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>
4

2 回答 2

2

您必须在设置新值之前将 ItemSource 设为空:

ctlList.ItemsSource = null;
ctlList.ItemsSource = YourObjects;

我建议使用 DataContext 和 Binding 而不是您的解决方案:

http://www.codeproject.com/Articles/30905/WPF-DataGrid-Practical-Examples

于 2013-04-25T18:43:55.683 回答
0

您需要像这样使用 DataContext :

grid1.DataContext = boxlist;
于 2013-04-25T18:38:14.343 回答