こんにちは、stackoverflowers。動的にユーザーコントロールを追加する
私は動的にいくつかの要素を画面に表示したいと思います。私は、OverlayElement基本クラスといくつかの子クラスを持っています。 OverlayElement基本クラスには、私のOverlayElementを描画する方法を定義する小さなusercontrolに対応するFrameworkElementが含まれています。
私は、ViewのItemcontrolにバインドされたOverlayElementsのコレクションを含むOverlayViewModelを持っています。
ここに、OverlayElementと子の抜粋があります。ここで
public abstract class OverlayElement : INotifyPropertyChanged
{
public UserControl View;
}
public class ImageOverlayElement : OverlayElement
{
public ImageOverlayElement(Point start, Point end)
{
View = new ImageOverlayElementView();
}
}
はImageOverlayElementView
<UserControl x:Class="Client.ImageOverlayElementView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Client"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
d:DataContext="{d:DesignInstance local:ImageOverlayElement}">
<Grid>
<Image
Source="{Binding ImageSource}"
Height="{Binding Height}"
Width="{Binding Width}"/>
</Grid>
</UserControl>
のexempleであり、これは、私はこれらの要素を使用しようとする方法です。私の問題は、私は(子クラスで初期化)OverlayElementからの私のUserControlビューを挿入する方法がわからないということです。
<ItemsControl
ItemsSource="{Binding OverlayElementsList}"
Background="Transparent">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type elements:OverlayElement}">
<!-- Need help for here, how can I insert my UserControl View from OverlayElement ? (initialized in the child class) -->
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
'public abstract class OverlayElement:INotifyPropertyChanged {public UserControl View; } 'nope。 – Will