के साथ डेटा टेम्पलेट मेरे पास एक सामान्य नियंत्रण है जो व्यूमोडेल के अंदर प्रकार की संपत्ति के आधार पर एक संपादक प्रदर्शित करता है। वर्तमान में यह Control
, ControlTemplate
और इस तरह DataTrigger
का उपयोग कर लागू हो जाता है -DataTrigger बनाम के साथ ControlTemplate। DataTemplateSelector
<Control
x:Name="MainControl"
Grid.Column="1"
TargetUpdated="OnTargetUpdated">
<Control.Style>
<Style>
<Style.Triggers>
<DataTrigger
Binding="{Binding Path=EditorType}"
Value="{x:Static view:EditorType.Bool}">
<Setter
Property="Control.Template"
Value="{StaticResource boolTemplate}" />
</DataTrigger>
<DataTrigger
Binding="{Binding Path=EditorType}"
Value="{x:Static view:EditorType.Text}">
<Setter
Property="Control.Template"
Value="{StaticResource textTemplate}" />
</DataTrigger>
<DataTrigger
Binding="{Binding Path=EditorType}"
Value="{x:Static view:EditorType.Integer}">
<Setter
Property="Control.Template"
Value="{StaticResource integerTemplate}" />
</DataTrigger>
...
....
</Style.Triggers>
</Style>
</Control.Style>
</Control>
अब, उसी ContentPresenter
, DataTemplate
और इस तरह DataTemplateSelector
का प्रयोग कर प्राप्त किया जा सकता है - का उपयोग कर DataTemplateSelector
है
<local:EditorTemplateSelector
BoolEditorTemplate="{StaticResource boolTemplate}"
TextEditorTemplate="{StaticResource textTemplate}"
IntegerEditorTemplate="{StaticResource integerTemplate}"
...
....
x:Key="EditorTemplateSelector">
</local:EditorTemplateSelector>
<ContentPresenter
ContentTemplateSelector="{Binding Source={StaticResource EditorTemplateSelector}}"
Content="{Binding}"
TargetUpdated="OnTargetUpdated">
</ContentPresenter>
// Template selector returning appropriate template based on type
मैं दूसरा दृष्टिकोण लग रहा है, बेहतर लेकिन आपसे जानना चाहते हैं -
कौन सा बेहतर है और क्यों?
क्या दो में कोई प्रदर्शन अंतर होगा?
जो मैं इकट्ठा करता हूं, उससे दूसरा तरीका सर्वोत्तम अभ्यास माना जाता है। यह भी अधिक पठनीय है क्योंकि इसमें चयन का तर्क नहीं है (जिसे हमेशा सी # में परिभाषित किया जाना चाहिए)। हालांकि मैं प्रदर्शन बिंदु पर भी रूचि रखता हूं। –