我有 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 具有我想要显示的图像属性(字节 [] 内容)。这是模板:
<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>
以上所有内容都在由 IoC 容器创建的 ViewModel 中(初始化期间 MediaRecords 属性为空)。当收藏充满我得到的物品时
"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
}
}
知道如何解决这个问题吗?
编辑
同一个集合绑定到另一个控件,所以我猜这个问题是并发相关的。通过维护集合的第二个副本并绑定到它来快速修复它,但也许有更好的方法?