首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

System.Windows.Data Error 二 Cannot find governing FrameworkElement

2012-12-26 
System.Windows.Data Error 2 Cannot find governing FrameworkElement在处理一个TreeViewItem的HeaderTem

System.Windows.Data Error 2 Cannot find governing FrameworkElement

在处理一个TreeViewItem的HeaderTemplate的时候,想用DataTemplate去展现Head,在绑定图片的时候,由于想把图片处理成圆角的,我用到了ImageBrush,ImageBrush的ImageSource我是绑定上去的,可能是因为MEF框架等各种原因,我DataTemplate中的绑定出现了以下错误(但在普通的项目中不会,求证中):

?

System.Windows.Data Error 2 Cannot find governing FrameworkElement...

?部分代码:

Staff.cs

?

public string Name { get; set; }public ImageSource Head { get; set; }

?MainWindow.cs

?

private void InitStaff(){Staff staff = new Staff(){Name = "syxc",Head = new BitmapImage(new Uri(@"Assets/Images/test.png",UriKind.Relative))};this.StaffItem.DataContext = staff;}

?MainWindow.xaml

?

<DataTemplate x:Key="StaffItemStyle" DataType="Staff"><StackPanel Orientation="Horizontal"><TextBlock Text="{Binding Path=Name}"/><Border CornerRadius="3" Width="40" Height="40"BorderBrush="Gray" BorderThickness="1"><Border.Background><ImageBrush ImageSource="{Binding Head}"/></Border.Background></Border></StackPanel></DataTemplate>...<TreeViewItem Name="StaffItem" Header="{Binding}"  HeaderTemplate="{StaticResource StaffItemStyle}"/>

?大致就是这样一种使用方式,在控制台看到输出上文开始提到的那种数据绑定错误时,可以考虑将DataTemplate中Border的背景ImageBrush抽出来使用,即:

?

<ImageBrush x:Key="Head" ImageSource="{Binding Head}"/>...<DataTemplate x:Key="StaffItemStyle" DataType="Staff"><StackPanel Orientation="Horizontal"><TextBlock Text="{Binding Path=Name}"/><Border CornerRadius="3" Width="40" Height="40"BorderBrush="Gray" BorderThickness="1"Background="{StaticResource Head}"/></StackPanel></DataTemplate>

?这样的话,相信就ok了(我是这样处理好的)!

ps:当然,这样改了以后,注意那个DataContext得做些适当的更改...

综上:我认为可能是一个组件的初始化的问题,前一种方式出现数据绑定错误的原因,可能是因为那个ImageBrush没能及时初始化好,所以在绑定数据时就报了错,但后面一种方式的话,ImageBrush在使用之前其实就已经初始化完了。

热点排行