WPF 解决 Style.Trigger 中数据绑定失效的问题

参考:stackoverflow

问题背景

有如下代码,发现在 ImageSource="{Binding SomeImage}" 中没有绑定的当前的 DataContext

xaml 复制代码
<Grid>
    <Border>
        <Border.Style>
            <Style TargetType="Border">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding SomeValue, ElementName=myControl, Mode=OneWay}" Value="0">
                        <Setter Property="Background">
                            <Setter.Value>
                                <!-- 此处 Binding 没有生效 -->
                                <ImageBrush ImageSource="{Binding SomeImage}" />
                            </Setter.Value>
                        </Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
    </Border>
</Grid>

解决办法

改成如下即可

xaml 复制代码
<Grid>
    <Grid.Resource>
        <ImageBrush x:key="myImage" ImageSource="{Binding SomeImage}" />
        <Style x:key="myStyle" TargetType="Border">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SomeValue, ElementName=myControl, Mode=OneWay}" Value="0">
                    <Setter Property="Background" Value="{StaticResource myImage}"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Resource>
    <Border Style="{StaticResource myStyle}"/>
</Grid>
相关推荐
蜗牛互联网1 小时前
OLMo-core 3的token gerrymandering提醒:MoE路由要按时间窗验收
java·人工智能·wpf
LateFrames5 小时前
WPF 升级选型:用 .NET 8 还是 .NET 10
.net·wpf·.net8·.net10
samble15 小时前
从零搭建灌装监控系统(十):生产追溯,条码触发自动记录
c#·wpf·mvvm·modbus·工业控制
SamChan903 天前
PDF页面旋转与CropBox陷阱:译文回填位置总是错位的根因实测
python·ai·pdf·wpf
SamChan904 天前
PDF翻译时页眉页脚总在捣乱?跨页重复文本块的检测与过滤实测
人工智能·python·ai·pdf·wpf
samble11 天前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
_Jonas11 天前
.net framework开发环境正式环境配置文件的切换
.net·wpf
dalong1013 天前
WPF:Modbus 状态监控
wpf·modbus
He BianGu14 天前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster
fogota17 天前
Emoji与Segoe MDL2 Assets的比较
c#·wpf