【问题标题】:WPF Adding a datatrigger to the ImageSource of a user control from another controlWPF 将数据触发器从另一个控件添加到用户控件的 ImageSource
【发布时间】:2017-11-25 02:59:37
【问题描述】:

我有以下用户控件:

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

然后在另一个用户控件中我尝试像这样引用它:

<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)。我真的不想对控件本身做太多更改,因为它在一个相当大的项目中被引用了几次,我不想破坏任何东西。

【问题讨论】:

    标签: c# .net wpf datatrigger


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多