1
我曾看過,但尚未找到我正在尋找的確切答案。我有一個DataGrid視圖綁定到數據源。我想在具有datagrid的窗口可見之後以編程方式對列進行樣式設置。我也想根據一些行爲不時地改變它。Datagrid(WPF)以編程方式創建列樣式(不是xaml)
我試圖使用DataGridTemplateColumn,但每當它運行它刪除這些列中的數據。此外,當我嘗試從資源得到它我不明白的單元格樣式(即它總是空)
private void StyleColumns()
{
// Replace the DueDate column with a custom template column.
for (int i = 0; i < 7; i += 2)
{
// Create a new template column.
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
templateColumn.Header = m_DataGrid.Columns[i].Header;
Style style = new Style();
templateColumn.CellStyle = (Style)Resources["ColumnGone"];
// ...
// Replace the auto-generated column with the templateColumn.
m_DataGrid.Columns[i] = templateColumn;
}
}
XAML是這樣
<DataGrid AutoGenerateColumns="True" x:Name="m_grfFileDataGrid" ItemsSource="{Binding cb.GRF}"
RowHeight="20" ColumnWidth="*"
AlternatingRowBackground="Beige"
SelectionUnit="CellOrRowHeader"
FontFamily="Consolas"
FontSize="12"
CanUserReorderColumns="False"
CanUserSortColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False">
<DataGrid.Resources>
<Style TargetType="DataGridCell" x:Key="ColumnGone">
<Setter Property="Background" Value="SeaGreen"/>
</Style>
<Style x:Key="DisabledColumn">
<Setter Property="DataGridColumn.CanUserResize"
Value="False" />
<Setter Property="DataGridColumn.CanUserSort"
Value="False" />
<Setter Property="DataGridColumn.CanUserReorder"
Value="False" />
<Setter Property="DataGridColumn.CellStyle"
Value="{StaticResource ColumnGone}" />
</Style>
</DataGrid.Resources>
</DataGrid>
任何幫助,將不勝感激。感謝
嘗試參照風格
另外,對於現有的列設置
Style
如下所示:'Style style =(Style)m_DataGrid.Resources [「ColumnGone」]; templateColumn.CellStyle = style;'。讓我知道它是否有幫助。 –非常感謝答案阿納託利。這工作。但是,仍然發生的一個問題是,當我應用樣式時,這些列中的原始數據會丟失。 – ssarangi