gpt4 book ai didi

wpf - Expression Blend、一个 ItemTemplate 和一个隐式样式

转载 作者:行者123 更新时间:2023-12-04 20:28:24 25 4
gpt4 key购买 nike

我遇到了 Blend 不呈现隐式样式的 DataTemplate 中的项目的问题。

我已经建立了一个基本项目来复制这个问题。下面是 Xaml + ResourceDictionary,适合那些有鹰眼的人看看我做错了什么(如果有的话),如果你真的很想看下面的 Zipped 项目的链接。

这是应用程序运行时呈现的内容:

Expected Output

这就是 Blend 所呈现的:

Blend Rendered

<Color x:Key="TextColor1">#FF3631C4</Color>

<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextWrapping" Value="NoWrap"/>
<Setter Property="TextTrimming" Value="None"/>
<Setter Property="Foreground">
<Setter.Value>
<SolidColorBrush Color="{DynamicResource TextColor1}"/>
</Setter.Value>
</Setter>
</Style>


<Canvas x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}">
<TextBlock Text="Textblock" Canvas.Left="44.954" Canvas.Top="49.305" />
<TextBlock Text="Textblock 2" Canvas.Left="44.954" Canvas.Top="86.284" />
<ListBox ItemsSource="{Binding Collection}" Canvas.Left="134.016" Canvas.Top="29.026" Height="154.275" Width="384.575">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Property1}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Canvas>

Complete Example Project (65kb) - WpfApplication2.zip

问题当然可以通过显式设置样式来解决,但是在我的主项目中这会让人有点头疼。

我在其他帖子上看到了一些关于 Blend 可能有问题但没有具体问题的评论。

任何想法/建议?

谢谢!

编辑:

我发现如果我给我的样式一个显式键,我就可以创建一个基于显式的隐式样式,如下所示:
<Style x:Key="TextBlockStyle1" TargetType="{x:Type TextBlock}">
<Setter Property="TextWrapping" Value="NoWrap"/>
<Setter Property="TextTrimming" Value="None"/>
<Setter Property="Foreground">
<Setter.Value>
<SolidColorBrush Color="{DynamicResource TextColor1}"/>
</Setter.Value>
</Setter>
</Style>

<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TextBlockStyle1}" />

这使我能够在我的 DataTemplate 中添加另一个隐式样式作为资源:
<DataTemplate>
<DataTemplate.Resources>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TextBlockStyle1}"></Style>
</DataTemplate.Resources>
<TextBlock Text="{Binding Property1}" />
</DataTemplate>

这将为我提供我在主项目中需要的可混合性,但仍然不能完全回答我最初的问题。

最佳答案

首先 Blend 是用 WPF 和 XAML 编写的。
因此 Blend 有自己的应用程序样式,并且由于您的应用程序还定义了全局样式,为了不合并它们,它将以不同的方式应用它们,并且它们用于应用这些样式的方法中可能存在错误。

这是我猜测为什么会发生这种情况。
虽然它不能解决问题,但可能会帮助您找出其他解决方法。

关于wpf - Expression Blend、一个 ItemTemplate 和一个隐式样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6151107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com