c# - WPF Custom Control with Item/Data Templates -


i know how create custom user control in wpf how can make can provide itemtemplate?

i have user control mixture of several other wpf controls, 1 of them being listbox. i'd let user of control specify content of list box i'm not sure how pass information through.

edit: accepted answer works following correction:

<usercontrol x:class="wpfapplication6.mycontrol"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:src="clr-namespace:wpfapplication6">     <listbox itemtemplate="{binding relativesource={relativesource findancestor, ancestortype={x:type src:mycontrol}}, path=itemssource}" /> </usercontrol> 

you want add dependencyproperty control. xaml different if deriving usercontrol or control.

public partial class mycontrol : usercontrol {     public mycontrol()     {         initializecomponent();     }      public static readonly dependencyproperty itemtemplateproperty =         dependencyproperty.register("itemtemplate", typeof(datatemplate), typeof(mycontrol), new uipropertymetadata(null));     public datatemplate itemtemplate     {         { return (datatemplate) getvalue(itemtemplateproperty); }         set { setvalue(itemtemplateproperty, value); }     } } 

here xaml usercontrol.

<usercontrol x:class="wpfapplication6.mycontrol"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:src="clr-namespace:wpfapplication6">     <listbox itemtemplate="{binding itemtemplate, relativesource={relativesource findancestor, ancestortype={x:type src:mycontrol}}}" /> </usercontrol> 

here xaml control:

<style targettype="{x:type src:mycontrol}">     <setter property="template">         <setter.value>             <controltemplate targettype="{x:type src:mycontrol}">                 <border background="{templatebinding background}"                         borderbrush="{templatebinding borderbrush}"                         borderthickness="{templatebinding borderthickness}">                      <listbox itemtemplate="{templatebinding itemtemplate}" />                 </border>             </controltemplate>         </setter.value>     </setter> </style> 

Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

python 3.5 - Pyqtgraph string in x tick -