WPF从样式代码创建UIElement - VirtualCanvas

时间:2016-11-07 14:30:48

标签: wpf canvas mvvm

我有一个很好的工作应用程序,其中包含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)

0 个答案:

没有答案