मैं DataTemplateSelector साथ ContentPresenter है:संपत्ति बदलते समय DataTemplateSelector को कैसे ट्रिगर करें?
...
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var model = item as ItemControlViewModel;
if (model.CurrentStatus == PrerequisitesStatus.Required)
{
return RequiredTemplate;
}
if (model.CurrentStatus == PrerequisitesStatus.Completed)
{
return FinishedTemplate;
}
...
return InProgressTemplate;
}
जब CurrentStatus बदल गया है, OnPropertyChanged कहा जाता है।
मुझे इस डेटा टेम्पलेट चयनकर्ता को ट्रिगर करने के लिए किसी भी तरह की आवश्यकता है जब संपत्ति बदल दी जाती है और ContentPresenter DataTemplate को बदलती है। कोई सुझाव?
Threre इसी तरह के सवाल कर रहे हैं: 1 2, लेकिन मैं क्योंकि बहुत अधिक राज्यों के, किसी भी DataTriggers उपयोग करने के लिए नहीं करना चाहती।
DataTriggers
<ContentPresenter
Grid.Column="1"
Height="16"
Width="16"
Margin="3">
<ContentPresenter.Triggers>
<DataTrigger Binding="{Binding Path=CurrentStatus}" Value="0">
<Setter Property="ContentPresenter.ContentTemplate" Value="{StaticResource ResourceKey=_requiredStatusTemplate}" />
</DataTrigger>
</ContentPresenter.Triggers>
</ContentPresenter>
के साथ खेलने की कोशिश की लेकिन एक त्रुटि मिली: ट्रिगर संग्रह सदस्यों मैं गलत हो सकता है प्रकार EventTrigger :(
@ apt0r आप VisualStateManager का उपयोग कर के रूप में टेम्पलेट्स के लिए विरोध विचार किया है? –
नहीं, मुझे लगता है कि यह यहां उपयुक्त नहीं है। मुझे संपत्ति नहीं, टेम्पलेट बदलने की जरूरत है। – rapt0r
मेरे पास अतीत में एक ही समस्या थी और इसे काम करने के लिए डेटाट्रिगर्स पर स्विच किया गया था, मुझे नहीं लगता कि इसके लिए एक बेहतर समाधान है ... – SvenG