使用Jetpack主题的Silverlight Datagrid在编辑内容时不会拉伸文本框

时间:2011-09-26 17:40:06

标签: silverlight xaml

我在一些使用Datagrids的应用程序中使用Jetpack主题。使用DataGridTextColumn编辑绑定内容时,文本框不会一直向下和向下延伸。将新项目添加到模型时会出现问题,因为文本的值为null,文本框的点击区域很小,并且会给我们的用户带来问题。

如何覆盖文本框样式,以便文本框在数据网格的单元格内完全,水平和垂直拉伸?我对DataGridTemplateColumn中的组合框有同样的问题。当没有默认值时,组合框很小,直到选择一个值,一旦选择了一个值,组合框只会拉伸到所选内容的宽度,而不是填充在网格中。

我创建了一个没有主题的新项目,一切正常,所以它与Jetpack主题有关,但我无法弄清楚在哪里。有人有什么想法吗?

UPDATE:我尝试将此样式用作列的EditElementStyle:

<Style TargetType="TextBox" x:Key="StretchTextBox">
    <Setter Property="HorizontalAlignment" Value="Stretch" />
</Style>

这也不起作用。

3 个答案:

答案 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资源字典中:

  1. 使用x:Key =“DataGridCellTemplate”找到ControlTemplate元素
  2. 在ControlTemplate中,找到ContentControl元素
  3. 在ContentControl上将Horizo​​ntalContentAlignment和VerticalContentAlignment设置为Stretch。
  4. 默认SDK模板和JetPack模板之间的区别在于,当JetPack模板使用ContentControl时,SDK使用ContentPresenter。