WPF将datatrigger从另一个控件添加到用户控件的ImageSource

时间:2017-06-22 02:22:59

标签: c# .net wpf datatrigger

我有以下用户控件:

<Border
        Style="{StaticResource notificationBarBorderStyle}"
        Height="21"
        >
        <StackPanel
            Orientation="Horizontal"
            Style="{StaticResource notificationBarStyle}"
            >
            <DockPanel>
                <Image
                    Width="17"
                    Height="16"
                    Margin="4,0,11,0"
                    Source="{Binding ElementName=NotificationControl, Path=ImageSource}"
                    />
                <TextBlock
                    x:Name="notificationTextBlock"
                    VerticalAlignment="Center"
                    Style="{StaticResource textBlockStyle}"
                    Text="{Binding ElementName=NotificationControl, Path=Message}"
                    />
            </DockPanel>
        </StackPanel>
    </Border>

然后在另一个usercontrol中我试着像这样引用它:

<Controls:NotificationBarControl
                Grid.Row="2"
                Grid.Column="0"
                DataContext="{Binding IncomingResult}"
                Message="{Binding TaskResultsMessage}"
                Visibility="{Binding Path=ShowTaskResults, Converter={StaticResource boolToHiddenVisibilityConverter}}"
                Command="{Binding DisplayTaskError}"
                ImageSource="{DynamicResource somePicture1}"
                >

我希望能够在图像源上放置一个数据触发器,这样根据布尔标志的状态,会出现一个不同的图像(称之为somePicture2)。我真的不想做太多改变控件本身,因为它在一个相当大的项目中引用了几次而且我不想破坏任何东西。

1 个答案:

答案 0 :(得分:1)

您可以将控件的Style属性设置为Style,其中DataTrigger绑定到您的bool属性:

<Controls:NotificationBarControl
                Grid.Row="2"
                Grid.Column="0"
                DataContext="{Binding IncomingResult}"
                Message="{Binding TaskResultsMessage}"
                Visibility="{Binding Path=ShowTaskResults, Converter={StaticResource boolToHiddenVisibilityConverter}}"
                Command="{Binding DisplayTaskError}">
    <Controls:NotificationBarControl.Style>
        <Style TargetType="Controls:NotificationBarControl">
            <Setter Property="ImageSource" Value="{StaticResource somePicture1}" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding YourBooleanSourceProperty}" Value="True">
                    <Setter Property="ImageSource" Value="{StaticResource somePicture2}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Controls:NotificationBarControl.Style>
</Controls:NotificationBarControl>
相关问题