मैं एक WPF combobox (WPFToolkit Datagrid के अंदर) प्राप्त करने का प्रयास कर रहा हूं, और मुझे सभी टुकड़ों को सही ढंग से गठबंधन करने में समस्या हो रही है। मैं संस्थाओं को LINQ का उपयोग कर रहा हूँ, और मैं एक Linq क्वेरी के परिणामों के लिए समग्र DataContext सेट कर रहा हूं:WPF कॉम्बोबॉक्स स्रोत को अपडेट नहीं कर रहा है
private void LoadDonationGrid()
{
donationGrid.ItemsSource = from donations in entities.Donation
.Include("Family")
.Include("PledgeYear")
.Include("DonationPurpose")
from donationPurposes in entities.DonationPurpose
select new { donations, donationPurposes };
}
मैं अपने कोड-पीछे जो बता गया के लिए ItemsSource प्रदान करता है में एक पृष्ठ संपत्ति है:
private IEnumerable donationPurposeList;
public IEnumerable DonationPurposeList
{
get
{
if (donationPurposeList == null)
{
donationPurposeList = from dp in entities.DonationPurpose
select dp;
}
return donationPurposeList.ToList();
}
}
बता गया के लिए XAML इस तरह दिखता है:
<tk:DataGridTemplateColumn Header="Purpose">
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=donations.DonationPurpose.Description, Mode=TwoWay}" />
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
<tk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Name="cboDonationPurpose"
SelectedValue="{Binding Path=donations.DonationPurposeID, Mode=TwoWay}"
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type Page},Mode=FindAncestor},Path=DonationPurposeList}"
DisplayMemberPath="Description"
SelectedValuePath="DonationPurposeID"
/>
</DataTemplate>
</tk:DataGridTemplateColumn.CellEditingTemplate>
</tk:DataGridTemplateColumn>
और सब कुछ सही ढंग से काम करने के लिए, यानी, उपयुक्त मान ComboBox में प्रदर्शित होते हैं, सही बात क अप करने के लिए लगता है ईर फोकस कॉम्बोबॉक्स छोड़ देता है। उस बिंदु पर, प्रदर्शित मूल्य मूल मान पर वापस आ जाता है, न कि नए चुने गए मूल्य पर। मैंने चयनित वैल्यू के बजाय चयनित इटैम का उपयोग करने का प्रयास किया है, लेकिन यह चयनित मूल्य के साथ समाप्त होता है जो कॉम्बोबॉक्स में दिखाई नहीं दे रहा है। मैं थोड़े रहस्यमय हूं: ऐसा लगता है कि इस बिट को काम करना चाहिए।
संपादित 3/2/09: मैं अभी भी इस पर परेशान हूं। मुझे ध्यान रखना चाहिए कि मेरे डेटाग्रिड में, किसी भी साधारण डेटा कॉलम (उदा।, "डेटाग्रिडटेक्स्ट कॉलम") अंतर्निहित डेटा स्रोत को अपडेट करें जैसा आप चाहते थे। लेकिन मेरे किसी भी टेम्पलेट कॉलम ("DataGridTemplateColumn") या कॉम्बोबॉक्स कॉलम ("DataGridComboBoxColumn") पर कोई भी अपडेट काम नहीं करता है: अंतर्निहित डेटा स्रोत कभी अपडेट नहीं होता है। निश्चित रूप से अन्य लोगों ने WPF.Toolkit डेटाग्रिड का उपयोग करने की कोशिश की है और इस परिदृश्य को काम करने के लिए प्राप्त किया है - लेकिन मैंने वहां सभी नमूना कोड को देखा है, और मैं मूल रूप से ऐसा कर रहा हूं जो यह कहता है (मेरे बाधाओं के भीतर समाधान), इसलिए मैं अपने सिर को खरोंच कर रहा हूं क्यों यह काम नहीं कर रहा है।
कोई विचार?
मेरे पास बिल्कुल वही समस्या थी। घंटों के लिए इस के साथ गड़बड़ कर रहे थे। मैंने बाध्यकारी को दोवे में बदल दिया, अन्य चीजों की पूरी मेजबानी बदलने की कोशिश की। [एमएसडीएन] (http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx) ऐसा लगता है इंगित करता है कि पाठ जैसे मामलों में डिफ़ॉल्ट लॉस्टफोकस पर सेट है। –
असल में, जब मैं टेक्स्टबॉक्स का उपयोग करता हूं तो यह मेरे लिए लॉस्टफोकस के लिए डिफ़ॉल्ट नहीं है। इसे PropertyChanged पर सेट करना हालांकि इसे ठीक करता है। – tcables
उत्कृष्ट !! समेकित चयनित इटैम बाध्यकारी – Adarsha