我有一个很好的工作应用程序,其中包含Canvas(FULL MVVM)中显示的许多对象。我希望能够在一个新的用例中处理所显示的20万个对象(仅显示100个,其他地方使用滚动条)。所以我无法逃避使用GUI虚拟化。但是没有简单的方法将它应用于具有不同位置/大小的不同对象的画布。不是吗? :)
这就是我今天所拥有的:
<!-- Basic sample ControlTemplate -->
<ControlTemplate x:Key="ActionTemplate" TargetType="ContentControl">
<Border Style="{StaticResource MouseOverStyle}" Width="20" Height="20" Background="Pink" />
</ControlTemplate>
<!-- Style declaration, using two styles together -->
<Style x:Key="ActionStyle" TargetType="{x:Type ContentControl}">
<Setter Property="Template" Value="{StaticResource ActionTemplate}" />
<Setter Property="ContextMenu" Value="{StaticResource CtxMenu}" />
</Style>
<!-- Template declaration refering to the defined style -->
<DataTemplate DataType="{x:Type ViewModel:ViewModelAction}">
<ContentControl Style="{StaticResource ActionStyle}" />
</DataTemplate>
我创建了一个用ViewModels对象填充的基本ItemsControl:
<ItemsControl x:Name="dataObjects" ItemsSource="{Binding Path=ViewData}">
每次在ViewData中添加VM时,datatemplate都会搜索获取渲染控件模板的样式。 这样做很好但是如果我想能够使用VirtualCanvas示例(Sample from Microsoft here),我需要能够从代码构建对象...我如何创建UIElement实例? (记住,我不希望GUI构建所有对象,我希望在代码需要时创建它们)
这就是我明天应该拥有的:(任何其他解决方案?)当必须显示UI元素时,我必须创建它:
UIElement elmt = ???
我被困了,谢谢你的帮助/建议/解决方案/ ......; o)