0
Im新的WPFWPF Datagrid:如何以編程方式更改單個單元格的邊框厚度?
我試圖根據列和行索引更改單個單元格的邊框。 到目前爲止,我已經有了獲取列和行索引的代碼。
現在我需要得到「該單元格」,並改變其邊界..
這是我的代碼,但它不工作:
我從網上這種方法:
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++;
}
任何想法?在此先感謝
我不太熟悉XAML編碼,所以儘可能我試圖在c#中做它,但感謝您的迴應。我稍後再嘗試。 – nfinium 2013-02-16 08:01:49
如果你不想深入xaml,你最好堅持使用winforms。 WPF的優點是您可以使用數據綁定,並將您的表單與所有代碼分離。這樣你可以提高代碼的可測試性。我知道WPF有一個很大的學習曲線,如果你想正確實施它,但事後你會獲得好處 – JMan 2013-02-16 08:04:17
同意@Jeroen,不僅是MVVM更清潔,它也比我見過的任何其他東西都更簡單。最後,你只有簡單,簡單的屬性,在你的ViewModel中有'INotifyPropertyChanged',在你的Views中有'{Binding }'。 – 2013-02-16 08:33:19