में xaml से पीछे कोड में बाइंडिंग कॉन्स सदस्य कोडबेहिंड में किसी कॉन्स वैल्यू को किसी संपत्ति को बांधने का कोई अच्छा तरीका है?WPF
जब मैं ComboBox का उपयोग, मैं आमतौर पर इस तरह से XAML और कोड में पीछे कार्य करें:
XAML:
<ComboBox Name="cbBuz">
<ComboBoxItem Content="foo" Uid="foo" IsSelected="true" />
<ComboBoxItem Content="bar" Uid="bar" />
</ComboBox>
codebehind:
ComboBoxItem item = cbBuz.GetSelectedItem();
switch (item.Uid)
{
case "foo": ... break;
case "bar": ... break;
}
कारण है कि मैं इस तरह से चुना है निम्नलिखित:
- एल के लिए ocalization उद्देश्य, सामग्री स्ट्रिंग का उपयोग यह निर्धारित करने के लिए नहीं किया जाना चाहिए कि अंतिम चयनित आइटम को सहेजने और लोड करने के दौरान कौन सा आइटम चुना गया हो।
- सादगी के लिए, एक्सएएमएल और कोड-बैक को आंतरिक पहचानकर्ता (इस मामले में, यूआईडी) से जोड़ा जाना चाहिए। इसलिए, एक्सएएमएल और कोड-बैक को अलग से रखा जा सकता है।
हालांकि, रखरखाव के लिहाज से, आंतरिक पहचानकर्ता एक जगह में इस तरह परिभाषित किया जाना चाहिए:
//IDs
public const string ID_foo = "foo";
public const string ID_bar = "bar";
...
//
switch (item.Uid)
{
case ID_foo: ... break;
case ID_bar: ... break;
}
समस्या है प्रतीत होता है संपत्ति स्थिरांक मूल्य नहीं हो सकता, इसलिए वहाँ ID_foo बाध्य करने के लिए कोई रास्ता नहीं है और इस तरह ComboBoxItem का UID को ID_bar:
//If ID_foo and ID_bar are properties, this will work.
<ComboBox Name="cbBuz">
<ComboBoxItem Content="foo" Uid="{Binding ID_foo}" IsSelected="true" />
<ComboBoxItem Content="bar" Uid="{Binding ID_bar}" />
</ComboBox>
तो, मैं इस समस्या को हल करने के लिए कैसे जानना चाहते हैं। या, इसे लागू करने का कोई बेहतर तरीका है। यह भी अच्छा होगा। एक बार जब यह एक संपत्ति में है, यह बाध्यकारी के माध्यम से प्रयोग करने योग्य हो जाएगा
private const string ID_Foo = "foo";
public string FooId
{
get { return ID_Foo; }
}
:
बेस्ट,
बहुत बहुत धन्यवाद! जैसा मुझे चाहिए था यह बिल्कुल वैसा ही है!इसके अलावा, रिसाव और ओवरहेड से संबंधित जानकारी वास्तव में उपयोगी है। – Aki24x