WPF Image绑定中碰到的事

本文探讨了在WPF应用程序中使用Image控件时遇到的一个问题:通过代码设置Image源会取消原有的数据绑定。文中提供了具体的代码示例,并介绍了解决方案——手动重新绑定的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做WPF的Demo时,碰到这样的问题,现在将它记录下来,以供需要时查阅。

 在Demo中用到Image控件绑定数据时,走正常绑定流程没出现什么问题,但在程序中用代码去设置这个Image的Source时会自动取消绑定,下次走正常绑定流程会失效 如下图代码:

 

ExpandedBlockStart.gifView Code
if (string.IsNullOrEmpty(sourceFileName) == false)
{
                txtPluginIcoPath.Text 
= sourceFileName;
                BitmapImage tempImage 
= new BitmapImage();
                tempImage.BeginInit();
                tempImage.StreamSource 
= File.Open(sourceFileName, FileMode.Open);
                tempImage.EndInit();
                imageIco.Source 
= tempImage;
}

刚开始出现这样问题的时候,莫名其妙,也许是WPF知识掌握的还不够,后来经过调试时发现,经过上面代码的设置Source后绑定事件一直没进去,发现可能是绑定被取消了,然后加上如下代码:

 

ExpandedBlockStart.gifView Code
DependencyProperty dp = Image.SourceProperty;
            
if (!BindingOperations.IsDataBound(imageIco, dp))
            {
//判断是否该控件存在绑定
                Binding bingding = new Binding("IcoPath");
                BindingOperations.SetBinding(imageIco, dp, bingding);
            }
            tempCanvas.DataContext 
= lboxPluginItems.SelectedItem;

 

然后问题得到解决:绑定被取消后手动写代码给他重新绑定。

 

取消绑定代码:

 

ExpandedBlockStart.gifView Code
DependencyProperty textProp = TextBox.TextProperty;
    
if (BindingOperations.IsDataBound(textBox, textProp))
    {
        BindingOperations.ClearBinding(textBox, textProp);
    }

 

 

转载于:https://www.cnblogs.com/skyrickie/articles/1986558.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值