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 に答える