मैंने इसे IMultiValueConverter को कार्यान्वित करके पूरा किया।
कनवर्टर को कॉम्बोबॉक्स पर बाध्यकारी आइटमसोर्स पर लागू किया गया है और दो बाइंडिंग सेट करता है। मूल्य के लिए पहला जो चुना जाना है। दूसरा कॉम्बोबॉक्स की आइटम्ससोर्स प्रॉपर्टी से जुड़ा हुआ है जो संभावित मानों की एक सूची है।
<ComboBox ItemsSource="{Binding Path=DataContext.EntityTypeOptions, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}">
<ComboBox.SelectedValue>
<MultiBinding Converter="{StaticResource SelectedValueIgnoreCaseConverter}">
<Binding Path="UpdatedValue" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged" />
<Binding Path="ItemsSource" Mode="OneWay" RelativeSource="{RelativeSource Mode=Self}" />
</MultiBinding>
</ComboBox.SelectedValue>
</ComboBox>
कनवर्टर के लिए, Convert() विधि ItemsSource अनदेखी मामले में चयनित मान पाता है और उसके बाद ItemsSource से मेल खाता हुआ मान देता है।
कनवर्टबैक() विधि केवल चयनित मान को ऑब्जेक्ट सरणी के पहले तत्व में वापस रखती है।
Imports System.Globalization
Imports System.Windows.Data
Imports System.Collections.ObjectModel
Public Class SelectedValueIgnoreCaseConverter
Implements IMultiValueConverter
Public Function Convert(values() As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IMultiValueConverter.Convert
Dim selectedValue As String = TryCast(values(0), String)
Dim options As ObservableCollection(Of String) = TryCast(values(1), ObservableCollection(Of String))
If selectedValue Is Nothing Or options Is Nothing Then
Return Nothing
End If
options.Contains(selectedValue, StringComparer.OrdinalIgnoreCase)
Dim returnValue As String = Utilities.Conversions.ParseNullToString((From o In options Where String.Equals(selectedValue, o, StringComparison.OrdinalIgnoreCase)).FirstOrDefault)
Return returnValue
End Function
Public Function ConvertBack(value As Object, targetTypes() As Type, parameter As Object, culture As CultureInfo) As Object() Implements IMultiValueConverter.ConvertBack
Dim result(2) As Object
result(0) = value
Return result
End Function
End Class
आपको किस स्थिति में इसकी आवश्यकता होगी? –
कॉम्बो बॉक्स संग्रह के लिए बाध्य है i.e मास्टर डेटा टेबल और कुछ पुराने मान जो किसी अन्य मामले में दूसरे टेबल में संग्रहीत हैं, जहां हम किसी संपत्ति से बंधे हैं जिसका मूल्य हैलो है। – Sandy
मैं 100% असंभव नहीं कह सकता, लेकिन नहीं, प्रतिबिंब केस संवेदनशील है (सी # में बाकी सब कुछ की तरह) तो यह काम नहीं करेगा। – BradleyDotNET