से मेल खाता है यह @ एंडीजी के उत्तर पर आधारित है लेकिन यह थोड़ा सुरक्षित है क्योंकि यह दृढ़ता से टाइप किया गया है। प्रकार के लिए
public class DataTypeConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
return value.GetType();
}
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
कनवर्टर का उपयोग करने के अपने DataTrigger परिवर्तित करें, और सेट मूल्य::
एक IValueConverter DataTypeConverter नाम है, जो एक वस्तु को स्वीकार करता है और उसके प्रकार देता है (एक System.Type के रूप में) को लागू करें
संसाधनों में
<DataTrigger Binding="{Binding SelectedItem,
Converter={StaticResource DataTypeConverter}}"
Value="{x:Type local:MyType}">
...
</DataTrigger>
प्रचार DataTypeConverter:
<UserControl.Resources>
<v:DataTypeConverter x:Key="DataTypeConverter"></v:DataTypeConverter>
</UserControl.Resources>
स्रोत
2011-02-11 04:40:48
+1, हालांकि कनवर्टर को इसके नाम के बजाय टाइप ऑब्जेक्ट वापस करना चाहिए ... –
क्या यह काम करेगा? रनटाइम स्ट्रिंग को किसी प्रकार के प्रकार से तुलना नहीं कर सकता है? मुझे पता है कि यह अधिकांश मूल्य प्रकारों को परिवर्तित/तुलना करने में संभालता है लेकिन यह अन्य प्रकार की तुलनाओं को कैसे प्रबंधित करता है उससे परिचित नहीं है। – AndyG
हां, यह काम करेगा, आपको केवल DataTrigger के मान में {x: Type} मार्कअप एक्सटेंशन का उपयोग करना होगा। –