开发者

WPF, Xaml and Controls Factory?

开发者 https://www.devze.com 2023-01-18 01:45 出处:网络
I\'d like to create WPF control which consists of few another controls. The main problem is how implement choosing right control depending on Model\'s type?

I'd like to create WPF control which consists of few another controls. The main problem is how implement choosing right control depending on Model's type?

<MyControl>
<!-- if DataContext.GetType() == Type1 -->
<Control1 DataContext = {Binding}/>
<!-- if DataContext.GetType() == Type2 -->
<Control2 DataContext = {Binding}>

</MyControl>

How can i implement and de开发者_JS百科sign it well? My idea was to put there something like...

Control CreateControl(object dataContext) {
 if (dataContext.GetType() == TYpe1)
     return new Control1() {DataContext = dataContext}
 if (dataContext.GetType() == TYpe2)
     return new Control2() {DataContext = dataContext}    
}

But i don't know how can i invoke such method, which returns Control inside XAML...


You can define DataTemplates in the resources, and use a ContentControl as a placeholder

Resources:

<DataTemplate DataType="{x:Type model:Model1}">
    <Control1 />
</DataTemplate>

<DataTemplate DataType="{x:Type model:Model2}">
    <Control2 />
</DataTemplate>

(note that you don't need to explicitly set the DataContext)

Usage:

<MyControl>
    <ContentControl Content="{Binding}" />
</MyControl>

It will pick the appropriate DataTemplate based on the type of the Content


You can use a DataTemplateSelector for that case.

0

精彩评论

暂无评论...
验证码 换一张
取 消