需要Silverlight模板才能重新加载

时间:2012-10-04 15:37:43

标签: silverlight mvvm datatemplate master-detail

我正在实现Master-Detail视图(尝试使用MVVM)。主文件是ListBox,包含5种不同类型的项目(在主文件中格式相同)。细节具有不同的表单字段,具体取决于在主服务器中选择的对象类型。我在CodeProject tutorial之后使用了DataTemplateSelector。根据{{​​1}}中选择的项目选择了正确的模板,但有一个奇怪的引用问题。

如果我从主人ListBox中的一个项目转到Type1的另一个项目,他们将使用完全相同的模板。这听起来不错,但由于它是相同的参考,因此第一项中正在进行的任何动画都将显示在第二项中。 如何强制单独应用模板,以便一个视图中的动画与另一个视图对模板的使用分开?

代码示例:(Type1呈现详细信息)

ContentControl

编辑 - 添加动画代码

此动画代码通过作用于SelectionChanged事件的行为在ComboBox上执行。在运行之前,我检查一下ComboBox是否专注。此动画仅在未聚焦时才会发生,作为视觉提示,必须修改之前的选择。

<ContentControl Content="{Binding Path=CVS.View.CurrentItem}">
    <ContentControl.ContentTemplate>
        <DataTemplate>
            <vms:MyTemplateSelector Content="{Binding}">
                <vms:MyTemplateSelector.Template1>
                    <DataTemplate>
                        <views:Type1View />
                    </DataTemplate>
                </vms:MyTemplateSelector.Template1>
                <vms:MyTemplateSelector.Template2>
                    <DataTemplate>
                        <views:Type2View />
                    </DataTemplate>
                </vms:MyTemplateSelector.Template2>
                <vms:MyTemplateSelector.Template3>
                    <DataTemplate>
                        <views:Type3View />
                    </DataTemplate>
                </vms:MyTemplateSelector.Template3>
                <vms:MyTemplateSelector.Template4>
                    <DataTemplate>
                        <views:Type4View />
                    </DataTemplate>
                </vms:MyTemplateSelector.Template4>
                <vms:MyTemplateSelector.Template5>
                    <DataTemplate>
                        <views:Type5View />
                    </DataTemplate>
                </vms:MyTemplateSelector.Template5>
            </vms:MyTemplateSelector>
        </DataTemplate>
    </ContentControl.ContentTemplate>
</ContentControl>

Extensions.Clone来自Silverlight forums

0 个答案:

没有答案