0

我是 WPF 新手

我试图根据列和行索引更改单个单元格的边框。到目前为止,我已经有了获取列和行索引的代码。

现在我需要得到'那个单元格'并改变它的边界..

这是我的代码,但它不起作用:

我从网上得到了这个方法:

    public static T GetVisualChild<T>(Visual parent) where T : Visual
    {
        T child = default(T);
        int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
        for (int i = 0; i < numVisuals; i++)
        {
            Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
            child = v as T;
            if (child == null)
                child = GetVisualChild<T>(v);
            else
                break;
        }    return child;
    }

然后这是我需要更改单元格属性的地方..

           int rows = 0;
            int col = 0;
        while (col < myDG.Columns.Count)
        {
            rows = 0;
            while (rows < myDG.Items.Count)
            {
                DataGridRow row = (DataGridRow)myDG.ItemContainerGenerator.ContainerFromIndex(rows);

                if (row != null)
                {

                    DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(row);
                    DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(col);

                    cell.BorderThickness = new Thickness (2,2,2,2);
                    cell.BorderBrush= Brushes.Black;


                rows++;
            }
            col++;
        }

任何想法?提前致谢

4

1 回答 1

1

尽量避免在您的 WPF 应用程序中隐藏代码。更喜欢将厚度属性设置为数据上下文上的绑定属性。

然后您可以通过设置 valueconverter 将此值转换为该属性的有效值。

这是一个非常基本的示例: http ://wpftutorial.net/DataBindingOverview.html

因此,如果您是 WPF 新手,请尝试搜索一些有关 MVVM 的视频。
Laurent Bignon 做了一些很好的解释整个概念

于 2013-02-16T07:57:37.040 回答