首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverlight 4: ContentTemplate背景变化

Silverlight 4: ContentTemplate背景变化
EN

Stack Overflow用户
提问于 2010-11-23 03:16:50
回答 1查看 891关注 0票数 1

我有一个标题样式,我的数据自定义标题。我使用主题作为我的应用程序。这里的问题是数据集的标题背景没有变化,但是当我移除样式时,标题背景没有问题,它会改变。

这是主题 这里是我的样本应用,右击网格和上下文菜单将显示为主题列表,选择不同的主题。我有两列,即有标题样式和没有标题样式。看到不同之处。谢谢你的帮助。

代码语言:javascript
复制
<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>

谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-12-08 07:47:53

我做了一个快速测试,它似乎既不适用于标记法,也不适用于ImplicitStyleManager属性法。这可能是因为样式设置器超出了范围,因此应用时没有主题。

建议1:看看Jet主题使用App.xaml中的资源字典处理它的方式,并尝试做一些类似的事情。(为此您将需要theme.xaml文件。编辑:这个链接可能有帮助。.)如果您想动态地更改主题,那么请考虑以下(旧的)关于在资源字典中交换主题的帖子(我还没有尝试过,但它应该可以工作)。

建议2:您需要考虑样式继承。因为"BasedOn“需要一个x:Key标记,所以您可以复制主题的隐式DataGridColumnHeader样式,并且只修改您感兴趣的部分。(我不知道是否有更优雅的方式。)

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

编辑2010-12-09

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

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

FIX:我不知道如何在没有"x:Key“属性的情况下继承隐式样式。我在谷歌上搜索了不少,但找不到任何有用的东西。您要么必须为所有数据标记头创建自定义列定义样式,要么就必须在下一个版本的Silverlight中为Silverlight团队提供一个新功能。或者选择一个主题来坚持并编辑主题的隐式列标题样式的副本,作为新的"DataGridHeaderStyle“样式。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4252455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档