【问题标题】:Silverlight 4: ContentTemplate Background ChangeSilverlight 4:ContentTemplate 背景更改
【发布时间】:2011-05-14 05:45:28
【问题描述】:

我的数据网格自定义标题有一个标题样式。我正在为我的应用程序使用主题。这里的问题是数据网格的标题背景没有改变但是当我删除样式时,标题背景没有问题,它改变了。

这是themes

这是我的sample application,右键单击网格,将出现主题列表的上下文菜单,选择不同的主题。我有两列,即有标题样式和没有标题样式。看到不同。感谢您的帮助。

<Style x:Key="DataGridHeaderStyle" TargetType="primitive:DataGridColumnHeader">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Grid HorizontalAlignment="Stretch">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="{Binding}" Grid.Column="0" HorizontalAlignment="Left" />
                        <filter:DataGridColumnFilter Grid.Column="1" HorizontalAlignment="Right" />
                    </Grid>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

谢谢

【问题讨论】:

  • “不变”是什么意思?
  • 颜色没有变成我选择的主题风格,这里是主题silverlight.codeplex.com/…
  • 这个赏金问题的任何人?我真的需要它。谢谢
  • 你如何应用/使用主题?使用隐式样式?
  • 这里没有足够的信息,添加细节。

标签: silverlight templates datagrid silverlight-4.0 background


【解决方案1】:

我做了一个快速测试,它似乎不适用于tag approachImplicitStyleManager attribute approach。这可能是因为样式设置器超出了范围,因此在没有主题的情况下应用。

建议1:看看Jet Pack theme在App.xaml中使用资源字典的处理方式,尝试做类似的事情。 (为此,您将需要 theme.xaml 文件。编辑:This link might help。)如果您想动态更改主题,请考虑这篇关于swapping themes in resource dictionaries 的(旧)帖子(我没有尝试过,但它应该工作)。

建议2:您需要考虑样式继承。由于“BasedOn”需要x:Key标签,你可以改为复制主题隐含的DataGridColumnHeader样式,只修改你感兴趣的部分。(不知道有没有更优雅的方式。)

如果这不是您的意思,请提供更多示例代码。

编辑 [2010-12-09]:

我查看了代码,我认为问题的根源在于缺少样式继承。您的“DataGridHeaderStyle”是说“不要使用正常的 DataGridColumnHeader 样式,而是在这个网格中使用这个 TextBlock。”所以 Silverlight 就是这样做的:它在无样式的默认 DataGridColumnHeader 中为您提供了一个样式化的 TextBlock。

证明:更新您的“Home.xaml”并在您的“DataGridHeaderStyle”样式的第二列中,在当前TextBlock 旁边添加一个TextBox。请注意,每次更改主题时,标题中 TextBox 的主题是如何变化的(查看 TextBox 背景),但列标题的背景仍停留在默认颜色上。就像我说的,您的自定义样式告诉 Silverlight 忽略隐式样式。

FIX:我不知道如何从没有“x:Key”属性的隐式样式继承。我用谷歌搜索了很多,但找不到任何有用的东西。您要么必须 a) 为所有数据网格标题创建自定义列定义样式,要么必须 b) 为下一版 Silverlight 中的新功能打扰 Silverlight 团队。或者 c) 选择一个主题并编辑该主题的隐式列标题样式的副本作为新的“DataGridHeaderStyle”样式。

我的假期即将开始,所以我希望这对您有所帮助。至少现在你知道问题出在哪里了。

【讨论】:

  • 答案可能不是您所希望的,但我确实找到了问题的根源。无需“-1”反对票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多