/ / डेटा बाइंडिंग कैसे करें? - xaml, windows-8, winrt-xaml

डेटा बाध्यकारी कैसे करें? - xaml, windows-8, winrt-xaml

मैं एक्सएएमएल में कुछ सरल डेटा बाइंडिंग करने की कोशिश कर रहा हूं लेकिन यह मेरे लिए काम नहीं कर रहा है और मुझे यकीन नहीं है कि क्यों।

मेरे पास यह ग्रिडव्यू है

 <GridView Name="test2">
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Header}" FontWeight="Bold" Style="{StaticResource ItemTextStyle}"/>
<TextBlock Text="{Binding Item}" FontWeight="Bold" Style="{StaticResource ItemTextStyle}"/>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>

मैं अब बांधने की कोशिश कर रहा हूं। मैंने इसे XMAL में करने की कोशिश की (यह दुर्घटनाग्रस्त हो गया) और सी # कोड के माध्यम से (कुछ नहीं होता)

कंस्ट्रक्टर के पीछे के कोड में मैंने ऐसा करने की कोशिश की

 public MyPage()
{
this.InitializeComponent();

Test t = new Test
{
Header = "Header 1",
Item = "Item 1",

};

List<Test> ts = new List<Test>();
ts.Add(t);
test2.DataContext = t;

}

मैंने इसे एक संग्रह के रूप में भी पारित करने की कोशिश की।

जैसा कि मैंने कहा कि मुझे यह करने के लिए एक्सएमएएल रास्ता नहीं मिल सकता है।

उत्तर:

उत्तर № 1 के लिए 1

यह काम करने के लिए न्यूनतम लाइन जोड़ना है:

test2.ItemsSource = ts;

लेकिन आपको कुछ चीजें मिलीं, जिनसे आपको बाद में समस्या हो सकती है।

  1. The DataContext स्थापना doesn ' t बहुत मतलब यहां, तुम "कह रही है कि तुम" फिर से एक बनाने जा रहा पुनः एक तत्वों के लिए प्रसंग आइटम आप "एक ग्रिड को फिर से बाइंड ।आमतौर पर, मैं "डी DataContext एक वर्ग है कि परीक्षण के अपने संग्रह में शामिल होगा-कि आपके पृष्ठ के DataContext होगा, उदाहरण के लिए, तो आप" डी है

    GridView नाम = "परीक्षण2" ItemsSource = "{बाइंडिंग टेस्ट}" >

    कहा पे Tests जो भी वर्ग आप के रूप में उपयोग की एक संपत्ति है DataContext. आप DataContext केवल एक चीज आप कोड में सेट करना चाहते हैं, तो बाकी सब कुछ bindings से बहती है ।

  2. के बजाय List, आप शायद उपयोग करना चाहते हैं ObservableCollection, ताकि डेटा बाइंडिंग इंजिन स्वचालित रूप से सूचित किया जाएगा जब आइटम जोड़े जाते हैं और संग्रह से निकाल दिए जाते हैं ।


उत्तर № 2 के लिए 1

मेरा मानना है कि आप को बांधने की जरूरत ItemsSource संग्रह करने के लिए अपने GridView की ।

इन चरणों का पालन करने का प्रयास करें:

  1. पर कोई गुण बनाएं MyPage: public List<Test> Tests { get; set; }

  2. बदलने के test2.DataContext = t; साथ में Tests = ts;

  3. अपने XAML में जोड़ें एक ItemsSource संपत्ति, इस तरह:

    <GridView Name="test2" ItemsSource="{Binding Tests}">