【问题标题】:Can't change gridview itemssource无法更改 gridview itemssource
【发布时间】: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


【解决方案1】:

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

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

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

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

【讨论】:

  • 其实我以前看过你的帖子,但是当我设置null并重新设置为list时,它需要一些时间,所以它并不快。 grid1.Items 不包含“刷新”之类的任何方法。
  • 这是您情况的唯一解决方案。当您说“它不快”时,您是什么意思?您的列表有多大?
  • 没有。我的意思是,当您清除列表并重新填写所有项目时,需要一段时间。您可以在视觉工作室中尝试。试试你的答案,看看。
【解决方案2】:

您需要像这样使用 DataContext:

grid1.DataContext = boxlist;

【讨论】:

  • 对不起,它不起作用。当我这样做时,我在 gridview 中看不到任何项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 2014-08-17
  • 1970-01-01
  • 2013-01-19
相关资源
最近更新 更多