【发布时间】:2011-02-14 15:13:02
【问题描述】:
我目前正在使用 ICollectionView myCollectionView 绑定到 ObservableCollection。该集合的内容是从 ComboBox 中选择的。每个集合项 myCollectionItem 都有一个 VisualBrush myVisualBrush 作为子项,并且 CurrentItem 的画笔显示在预览面板中。
集合项也是一个子对象 myItemChild,它包含许多用于生成滑块的自己的属性。此滑块会更改预览面板上的属性。
这一切都按预期工作。
当 Collectionview 的 CurrentItem 更改时,预览面板会正确更新,但滑块继续显示上一个 CurrentItem 的 myItemChild。
对 myItemChild 的更改没有被提出,我应该如何处理这种情况?
我很可能错过了一些明显的东西,所以任何指针都表示赞赏。
问候
罗伯
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<!-- Combo Box for selection of item-->
<ComboBox Grid.Row="0" ItemsSource="{Binding myCollectionView, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True">
<ComboBox.ItemTemplate>
<DataTemplate DataType="{x:Type vm:myCollectionItem}" >
<StackPanel>
<Rectangle Height="40" Width="40" Fill="{Binding myVisualBrush}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<!-- Panel to preview item-->
<ContentControl Grid.Row="1" Content="{Binding myCollectionView/}">
<ContentControl.ContentTemplate>
<DataTemplate DataType="{x:Type vm:myCollectionItem}" >
<Rectangle Margin="20" Fill="{Binding myVisualBrush}" />
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
<!-- Slider to edit item-->
<ContentControl Grid.Row="2" Content="{Binding myCollectionView/}">
<ContentControl.ContentTemplate>
<DataTemplate DataType="{x:Type vm:myCollectionItem}" >
<ContentControl Content="{Binding myItemChild}">
<ContentControl.ContentTemplate>
<DataTemplate DataType="{x:Type vm:myCollectionItemChild}" >
<StackPanel>
<Label Content="{Binding myValueLabel, Mode=OneWay}"/>
<Slider Value="{Binding myValue, Mode=TwoWay}" Maximum="{Binding myValueMax}" Minimum="{Binding myValueMin}"/>
</StackPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Grid>
【问题讨论】:
-
骑士你为什么在绑定中使用斜线?删除它,只写 Content="{Binding myItemChild}"
-
@vorrtex 这是我简化代码时的错字。应该已经在 myCollectionView 上指示 CurrentItem。我已经编辑了这个问题。谢谢
标签: wpf xaml binding icollectionview