解决方法:在网格应用程序中找不到样式中的可附加属性触发器

本文关键字:触发器 属性 样式 找不到 方法 网格 应用程序 解决 | 更新日期: 2023-09-27 18:30:18

我在Windows8中使用Visual Studio 11。在网格应用程序 (Metro) 中设置数据触发器会在 XAML 中显示此错误:

样式中找不到可附加属性触发器

<Image Stretch="UniformToFill">
     <Image.Style>
         <Style TargetType="Image">
             <Setter Property="Source" Value="{Binding Image}"/>
             <Style.Triggers>
                 <DataTrigger Binding="{Binding Image}" Value="{x:Null}">
                     <Setter Property="Source" Value="Images/Default.png"/>
                 </DataTrigger>
             </Style.Triggers>
         </Style>
    </Image.Style>
</Image>

为什么要给我看这个?

解决方法:在网格应用程序中找不到样式中的可附加属性触发器

触发器在

Windows 8 Metro 风格的应用中不受支持。我建议您编写一个转换器,它将用默认值替换空值。

您可以使用VisualState而不是object。Windows 8 中的触发器 这是代码

 <ControlTemplate TargetType="Button">
<VisualStateGroup.Transitions>
  <!--Take one half second to transition to the PointerOver state.-->
  <VisualTransition To="PointerOver" 
                      GeneratedDuration="0:0:0.5"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<VisualState x:Name="PointerOver">
<Storyboard> 
<ColorAnimation Storyboard.TargetName="ButtonBrush" 
Storyboard.TargetProperty="Color" To="Red" />
 </Storyboard> 
</VisualState> 
</VisualStateGroup>
</VisualStateManager.VisualStateGroups> 
  <Grid.Background>
<SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
 </Grid.Background>
</Grid>
 </ControlTemplate>