1

複数のアイテムを持つ GridView があります (リストから 10 個のアイテムがバインドされます)。そして (簡単な例として) テキスト フィールドとボタンを用意します。テキスト フィールドに 0 から 9 までの数字を入力します。ボタンをクリックすると、テキスト フィールドに入力されたインデックスで項目の背景を変更したいと考えています。したがって、0を入力すると、最初のアイテムの背景などを変更したいなどです。グローバルリストがあり、そのリストからオブジェクトを取得できますが、グリッドビューでこのアイテムの背景を変更する方法がわかりません

4

2 に答える 2

1

その別のアイテムのDataTemplateを持つことができます (背景のみを変更します)。次に、TemplateSelectorを使用して、そのテンプレートを TextBox にバインドされた番号と一致する番号のアイテムにのみ適用するように設定できます。

public class GridViewDataTemplateSelector : DataTemplateSelector
{
    public override DataTemplate
        SelectTemplate(object item, DependencyObject container)
    {
        FrameworkElement element = container as FrameworkElement;

        if (element != null && item != null && item is GridViewRow)
        {
            GridViewRow  rowitem = item as GridViewRow;

            // Here's where you compare with actual selected number (change 1 with the method call to obtain it.
            if (GridViewRow.RowIndex == 1) 
                return
                    element.FindResource("SpecialBackgroundRowTemplate") as DataTemplate;
            else 
                return
                    element.FindResource("NormalBackgroundRowTemplate") as DataTemplate;
        }

        return null;
    }
}

ここSpecialBackgroundRowTemplateNormalBackgroundRowTemplateは、指定されたグリッド行の通常の背景とフォーカスされた背景を設定する DataTemplates です。

于 2012-09-25T17:09:27.787 に答える
0

オブジェクトを定義DataGridViewCellStyleしてそのプロパティを設定し、datagridview から任意のセルを呼び出すことができます -

DataGridViewCellStyle dgvs = new DataGridViewCellStyle();   
dgvs.BackColor = Color.Red;
yourDGV.Rows[0].Cells[0].Style = dgvs;
于 2012-09-25T17:16:10.697 に答える