更改集合时,数据绑定FluidKit ElementFlow中的InvalidOperationException

时间:2012-09-19 13:32:45

标签: wpf data-binding custom-controls

我有ElementFlowContainer用户控件,其中包含FluidKit.Showcase项目中的ElementFlow。

<UserControl x:Class="Controls.ElementFlowContainer">
<Grid>
<-- Other controls (cut) -->
<Controls:ElementFlow x:Name="_elementFlow" ItemsSource="{Binding}" ItemTemplate="{DynamicResource TestDataTemplate}" SelectedIndex="3">
<-- Layout, Background, Camera settings (cut) -->
</Controls:ElementFlow>
</Grid>
</UserControl>

我有ObservableCollection作为ElementFlow的DataContext:

<Controls:ElementFlowContainer DataContext="{Binding MediaRecords}"/>

MediaRecord具有我想要显示的图像属性(byte [] Content)。这是模板:

<DataTemplate x:Key="TestDataTemplate" 
DataType="{x:Type DAL:MediaRecord}">
<Border x:Name="ElementVisual" Background="White" BorderThickness="2" BorderBrush="#ff9e8028">
<Image Source="{Binding Content}" Stretch="Fill" />
</Border>
</DataTemplate>

上面的所有内容都在ViewModel中,它由IoC容器创建(MediaRecords属性在初始化期间为null)。当收集物充满物品时我

"InvalidOperationException '[Unknown]' property does not point to a DependencyObject in 
path "(0)[0].(1)[1].(2).(3)[0].(4)."

在属性设置器中的RaisePropertyChanged中发生此错误:

public const string MediaRecordsPropertyName = "MediaRecords";
public ObservableCollection<MediaRecord> MediaRecords
{
 get { return _mediaRecords; }
 set 
 { if (_mediaRecords == value) { return; } _mediaRecords = value;
   RaisePropertyChanged(MediaRecordsPropertyName); // error here         
 }
}

知道怎么解决这个问题吗?
修改
相同的集合绑定到另一个控件,所以我想这个问题是与并发相关的。通过维护收集和绑定的第二个副本来修复它的快速和肮脏,但也许有更好的方法?

1 个答案:

答案 0 :(得分:0)

单独收集的解决方案有效,现在可能会关闭。