0

gridview(100個の緑色のボックスを持つItemTemplatesがある)でボックスの色を変更しようとしています。

最初に、リスト(クラスとして入力)を作成し、すべてのアイテムをリストに追加し、リストをグリッドビュー ソースに追加しました。

grid1.ItemsSource = boxlist;

その後、グリッドビューでアイテムクリックのクリックイベントを追加しました。アイテムをクリックすると、このアイテムの色が変わります。だから私はそれとしてリストを編集しました:

int id = ((Boxes)e.ClickedItem).id;
boxlist[id].color = "DarkRed";
grid1.ItemsSource = boxlist;

クリックした項目の色を変えようとしたのですが、うまくいきません。リスト項目の色は正常に変更されていますが、グリッドビューはそれを取得していません。しかし、私は 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 を null にする必要があります。

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

ソリューションの代わりに DataContext と Binding を使用することをお勧めします。

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

于 2013-04-25T18:43:55.683 に答える