如何在WPF

时间:2019-02-18 08:39:12

标签: c# wpf xaml datagrid

我有一个数据网格视图,该视图直接从数据库获取数据。问题是页眉,列和行的大小(高度和宽度)很大,看起来不太整齐。

这是我目前完成的XAML和.cs代码。

XAML

<WrapPanel Margin="20,0,20,20" HorizontalAlignment="Center">
    <DataGrid AutoGenerateColumns="True" Name="dataGridProgram" SelectionMode="Single" 
              FontSize="15" BorderThickness="1" IsReadOnly="true" Height="300" 
              Width="700"/>
</WrapPanel>

CS

Program_Controller _PController = new Program_Controller();
OleDbDataAdapter da = _PController.GetProgramList();
DataTable dt = new DataTable();
da.Fill(dt);
dataGridProgram.ItemsSource = dt.AsDataView();

这是我的数据网格视图的当前外观。我从不自定义更改行和列的大小。全部为自动/默认值。我也尝试手动设置数据网格的列/行高度和宽度。但是然后,我看不到文字。那么,我究竟怎么没有得到更简单的数据网格呢?还是如何为数据网格设置模板?

Current look

我希望它显示得更简单,更整洁。我想要它,因为尺寸是正常尺寸,所以我不需要水平滚动。

Simpler look wanted

2 个答案:

答案 0 :(得分:1)

这不是默认样式。这是通过使用材质设计UI库获得的。

您可以通过从App.xaml文件或包含它的任何位置删除以下资源字典的引用来切换回默认样式:

<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
  

是否可以做些什么来仅覆盖数据网格视图的材质设计样式?

好的。在ResourceDictionary元素之后的App.config的{​​{1}}中将这些样式包括在内:

<ResourceDictionary.MergedDictionaries>

答案 1 :(得分:1)

在我看来,如果您不了解某件事情是如何工作的并且没有按照您的意愿进行操作,那么最好不要使用它。 因此,我建议从您的项目中删除材料设计。

您应该阅读样式。将以下内容视为该过程的开始。

让我们想象一下,这是一个比数据网格更简单的控件。 样式具有范围,这是材料设计所设置的默认样式。 这与类型的uielement相关联。 对于默认样式,它将类型用作键。 wpf中的样式是一个属性,因此您可以对其进行设置,并且在将其设置为较低范围时,它将覆盖先前设置的所有内容。

您可以将样式设置为其中没有任何内容或{x:Null}。 那将超越材料设计风格。 同样,它也可能会使用模板。

但是我不建议您这样做。

为什么?

因为Datagrid不仅仅是一个控件。

材料设计将对构成数据网格的众多零件进行模板化和样式化。 DataGridRow,DataGridCell等等等

由于您是初学者,所以不知道它们是什么,可能会错过一些机会,但仍然会得到意想不到的结果。

您最终可以正常工作。

Ph。

然后,您可能会注意到其他控件看起来很怪异,并且表现不出预期。

如果您希望材料设计能给您带来一切,那么它就很棒。

如果不这样做,请不要使用它。