我有这样的代码:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:MyViewModel}">
<!-- xaml is typed here directly -->
<Border>
...
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
而DataTemplate中的XAML代码很长(超过200行)。
我想把DataTemplate中的XAML代码移到单独的UserControl中,以便更容易地编辑和维护。我采取以下步骤:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:MyViewModel}">
<!-- xaml is moved to separate UserControl -->
<local:MyViewModelUserControl />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我遇到的问题是第二段代码(使用UserControl)的渲染/处理时间比第一段代码长两倍左右。有什么办法可以解决吗?
注意:我移动的不是ListBox,而是DataTemplate中的XAML。原因不是为了重用此代码,而是为了最小化放置ListBox的主文件。另一个问题是,我在ListBox中有几个DataTemplate(针对几个ViewModel),而且XAML非常庞大。这就是为什么我想将DataTemplate中的XAML(位于其中的)移动到单独的控件中的原因。
MyViewModelUserControl
的代码。我认为问题不是因为您将代码移动到另一个 xaml 文件中引起的。可能是数据获取或数据变得更大导致了这个问题。 - ViVi