我在一些使用Datagrids的应用程序中使用Jetpack主题。使用DataGridTextColumn编辑绑定内容时,文本框不会一直向下和向下延伸。将新项目添加到模型时会出现问题,因为文本的值为null,文本框的点击区域很小,并且会给我们的用户带来问题。
如何覆盖文本框样式,以便文本框在数据网格的单元格内完全,水平和垂直拉伸?我对DataGridTemplateColumn中的组合框有同样的问题。当没有默认值时,组合框很小,直到选择一个值,一旦选择了一个值,组合框只会拉伸到所选内容的宽度,而不是填充在网格中。
我创建了一个没有主题的新项目,一切正常,所以它与Jetpack主题有关,但我无法弄清楚在哪里。有人有什么想法吗?
UPDATE:我尝试将此样式用作列的EditElementStyle:
<Style TargetType="TextBox" x:Key="StretchTextBox">
<Setter Property="HorizontalAlignment" Value="Stretch" />
</Style>
这也不起作用。
答案 0 :(得分:1)
找到DataGridTemplateColumn
模板/样式TargetType="data:DataGridCell"
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
找到ContentPresenter
元素并设置
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
和VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
或者您可能需要更改ContentTemplate
我没有Jetpack主题,但我希望这会有所帮助。我只是在猜测可能出现的问题。
答案 1 :(得分:1)
我已经找到了答案,但我将Rumplin的答案标记为已被接受,因为他告诉我该怎么做。如果你看一下http://www.silverlight.net/content/samples/sl4/themes/jetpack.html数据网格就会有同样的事情。启动没有主题的新SL应用程序会使datagrid按预期工作。注释掉整个ContentTemplate会使单元格中的内容填满:
<Style TargetType="sdk:DataGridCell">
<Setter Property="FontFamily" Value="{StaticResource NormalFontFamily}" />
<Setter Property="FontSize" Value="{StaticResource DefaultFontSize}" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Padding" Value="7"/>
<!--
<Setter Property="Template" Value="{StaticResource DataGridCellTemplate}" />
-->
<Setter Property="VerticalContentAlignment" Value="Stretch" />
</Style>
我对主题和动画知之甚少,但这似乎可以解决问题。我在活动行周围有一条蓝线,但它无关紧要。
答案 2 :(得分:0)
JetPack主题中的DataGrid模板存在此问题(单元格内容未伸展),而SDK中的默认模板则没有。上面的答案没有解决JetPack模板的问题;而是它显示了如何使用默认的SDK模板而不是JetPack模板。我以为我会发布JetPack模板本身的修复程序。
在JetPack主题的SDKStyles.xaml资源字典中:
默认SDK模板和JetPack模板之间的区别在于,当JetPack模板使用ContentControl时,SDK使用ContentPresenter。