WPF Image绑定中碰到的事

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

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

 

View 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后绑定事件一直没进去,发现可能是绑定被取消了,然后加上如下代码:

 

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

 

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

 

取消绑定代码:

 

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

 

 

posted @ 2011-03-16 23:08  MrNobody_123456  阅读(601)  评论(0编辑  收藏  举报