如果两个值都符合预期,我的MultiDataTrigger
应更改TabItem
的属性。其中一个值是Property
中的TabItem
,另一个是Properties.Settings.Default
属性。
<!--<App xmlns:prop="clr-namespace:MyApp.Properties"... -->
<DropShadowEffect x:Key="Glow.Foreground.Large" ShadowDepth="0" Color="WhiteSmoke"
Opacity="1" BlurRadius="10" RenderingBias="Quality"/>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid Name="Panel" Background="Transparent">
<Border Name="ContentBorder"
BorderBrush="#FFD4D4D4" BorderThickness="0">
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center" Effect="{x:Null}"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="10,2"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Panel"
Property="Background"
Value="#FFFAFAFA" />
<Setter Property="Foreground"
Value="#FF2B579A" />
<Setter TargetName="ContentBorder"
Property="BorderThickness"
Value="1,1,1,0" />
</Trigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Property="IsSelected" Value="False"/>
<Condition Binding="{Binding
Source={x:Static prop:Settings.Default},
Path=EditorExtendChrome}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="ContentBorder"
Property="Effect"
Value="{StaticResource Glow.Foreground.Large}" />
<Setter TargetName="ContentBorder"
Property="Background"
Value="#7FFFFFFF"/>
</MultiDataTrigger>
<Trigger Property="IsMouseOver" Value="True"
SourceName="Panel">
<Setter Property="Foreground"
Value="#FF2B579A" />
<Setter Property="Background"
Value="#FFFAFAFA" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<!--Default Values-->
<Setter Property="FontFamily" Value="Segoe UI Semilight"/>
</Style>
我是following this post,但错误“你必须拥有'绑定'的非空值”仍然存在。
答案 0 :(得分:0)
普通Settings
类不提供与WPF兼容的属性更改通知。它可能这就是你的代码不起作用的原因。但如果没有可靠地再现问题的a good, minimal, complete code example,就无法确切知道。
Default
属性在程序执行的早期将null
,因此如果没有属性更改通知,WPF将只看到null
值,当然这是对它毫无用处。
另请注意,根据您引用的SO回答,Condition
的{{1}}对象应指定MultiDataTrigger
而不是Binding
。
如果以上内容无法解决您的问题,请提供更好的代码示例,并更具体地说明错误:您何时看到此错误,如何报告错误以及错误的完整堆栈跟踪(如果可供使用的话)?请注意,通过良好的代码示例,即使没有对属性更改通知的直接支持,也可以提供解决您的确切方案的答案。