仅使用XAML使用DataTrigger更改元素属性

时间:2011-10-03 19:18:02

标签: wpf xaml

我正在尝试使用样式中的DataTrigger设置元素的属性。

<Image x:Name="post_image1" Height="278" HorizontalAlignment="Left" VerticalAlignment="Top" Source="{Binding LatestFeed[1].PostImageURL}" MaxWidth="410" MaxHeight="410" Margin="0,0,50,0">
                            <Image.Style>
                                <Style>
                                    <Style.Triggers>
                                        <DataTrigger
                                              Binding="{Binding post_image1.Source}"
                                              Value="noimage">
                                            <Setter  Property="Image.Visibility" Value="Collapsed" />
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Image.Style>
                        </Image>

我想要发生的是,如果Source Value设置为“noimage”(我将其设置为数据对象的一部分),则Image Visibility属性将设置为Collapsed。

我觉得我很亲近,而且我不确定我错过了什么。

1 个答案:

答案 0 :(得分:1)

由于Style直接应用于Image,DataTrigger中的Bindings使用Current Image的DataContext,因此您可以使用与Source绑定中完全相同的方式引用该值。

<Image x:Name="post_image1" Height="278" HorizontalAlignment="Left" VerticalAlignment="Top" Source="{Binding LatestFeed[1].PostImageURL}" MaxWidth="410" MaxHeight="410" Margin="0,0,50,0">
    <Image.Style>
        <Style TargetType="{x:Type Image}">
             <Style.Triggers>
                 <DataTrigger
                     Binding="{Binding LatestFeed[1].PostImageURL}"
                     Value="noimage">
                         <Setter  Property="Visibility" Value="Collapsed" />
                 </DataTrigger>
             </Style.Triggers>
        </Style>
    </Image.Style>
</Image>