एक सूची की तलाश में था, ज्यादातर यह पता लगाने के लिए कि किस बाइंडिंग को प्रदर्शन में सुधार के लिए एक तरफ सेट किया जा सकता है।निम्नलिखित कार्य आप पाते हैं जो डिफ़ॉल्ट रूप से दो तरह से बाध्यकारी का उपयोग को नियंत्रित करता है मदद कर सकते हैं:
public IList<DependencyProperty> GetAttachedProperties(DependencyObject obj)
{
var result = new List<DependencyProperty>();
foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(obj, new Attribute[] { new PropertyFilterAttribute(PropertyFilterOptions.Valid) }))
{
var dpd = DependencyPropertyDescriptor.FromProperty(pd);
if (dpd != null)
{
result.Add(dpd.DependencyProperty);
}
}
return result;
}
public bool IsBindsTwoWayByDefault(DependencyObject obj, DependencyProperty property)
{
var metadata = property.GetMetadata(obj) as FrameworkPropertyMetadata;
if (metadata != null)
{
return metadata.BindsTwoWayByDefault;
}
return false;
}
एक प्रिंट समारोह का उपयोग करना, हमें एक सूची देता है: दो तरह के साथ
var objList = new List<DependencyObject> { new TextBox(), new TextBlock(), new Label(), new ComboBox(), new Button() };
foreach (var obj in objList)
{
var props = GetAttachedProperties(obj);
foreach (var prop in props)
{
if(IsBindsTwoWayByDefault(obj, prop))
Debug.WriteLine($"{obj} : {prop.OwnerType}:{prop.Name}");
}
}
नमूना परिणाम (नियंत्रण गुण डिफ़ॉल्ट रूप से बाध्यकारी)
System.Windows.Controls.TextBox : System.Windows.Controls.TextBox:Text
System.Windows.Controls.TextBox : System.Windows.Controls.TextSearch:Text
System.Windows.Controls.TextBlock : System.Windows.Controls.TextSearch:Text
System.Windows.Controls.Label : System.Windows.Controls.TextSearch:Text
System.Windows.Controls.ComboBox Items.Count:0 : System.Windows.Controls.ComboBox:IsDropDownOpen
System.Windows.Controls.ComboBox Items.Count:0 : System.Windows.Controls.ComboBox:Text
System.Windows.Controls.ComboBox Items.Count:0 : System.Windows.Controls.Primitives.Selector:SelectedIndex
System.Windows.Controls.ComboBox Items.Count:0 : System.Windows.Controls.Primitives.Selector:SelectedItem
System.Windows.Controls.ComboBox Items.Count:0 : System.Windows.Controls.Primitives.Selector:SelectedValue
System.Windows.Controls.ComboBox Items.Count:0 : System.Windows.Controls.TextSearch:Text
System.Windows.Controls.Button : System.Windows.Controls.TextSearch:Text
दिलचस्प बात यह है कि अधिकांश नियंत्रणों में टेक्स्टशर्च प्रॉपर्टी होती है जिसमें दो-तरफा बाध्यकारी होता है।
स्रोत
2017-11-21 16:36:27
क्या कोई ऐसी जगह है जहां मुझे सभी गुणों और उनके बाइंडिंग मोड की सूची मिल सकती है? नियम क्या हैं? – Shimmy
संपत्तियों की सूची अंतहीन है। मुझे लगता है कि http://msdn.microsoft.com माइक्रोसॉफ्ट के अधिकांश लोगों की सूची है। मुझे कोई जानकारी और बाध्यकारी मोड नहीं दिख रहा है, इसलिए मुझे लगता है कि आपको इसे स्वयं से ढूंढना होगा। मेरे उत्तर में मैंने जो यूआरएल दिया है, उसे बताता है कि उन्हें कैसे ढूंढें –
निर्भरता गुणों के बारे में क्या है जिनके मेटाडेटा फ्रेमवर्कप्रॉपर्टी मेटाडेटा के बजाय यूआईपीप्रर्टी मेटाडाटा हैं? इस तरह के गुणों के लिए एमएसडीएन दस्तावेज़ों में BindsTwoWayByDefault का उल्लेख नहीं है क्योंकि यह बूलियन UIPropertyMetadata पर मौजूद नहीं है। – HappyNomad