1

我在 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>

为什么要给我看这个?

4

2 回答 2

4

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

于 2012-04-08T05:00:25.493 回答
3

您可以在 Windows 8 中使用 VisualState 而不是 object.Triggers 这是代码

 <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>
于 2012-07-12T19:27:42.660 回答