मेरे पास एक टेक्स्टब्लॉक है जो एक सूची बॉक्स के अंदर है और मैं एक कथन लिखने की कोशिश कर रहा हूं जो इस टेक्स्टब्लॉक की सामग्री पर निर्भर है। मैं टेक्स्टब्लैक से डेटा प्राप्त करने का प्रयास कर रहा हूं जिसे मैंने "श्रेणी 1" नाम दिया है, हालांकि जब मैं अपना कथन लिखने का प्रयास करता हूं तो मुझे एक संदेश मिल रहा है जो सिर्फ कहता है

"नाम श्रेणी 1 वर्तमान संदर्भ में मौजूद नहीं है"

मैं उस टेक्स्टब्लॉक को लिस्टबॉक्स से बाहर ले जाकर थक गया और यह ठीक काम करता है लेकिन इसके अंदर काम नहीं करेगा। क्या कोई इस टेक्स्टब्लॉक को संदर्भित करने के बारे में जानता है।

मेरा एक्सएएमएल कोड यहां है

        <ListBox x:Name="HINList" Margin="0,300,-12,0" ItemsSource="{Binding Details}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Margin="0,0,0,17" Width="432">
                        <TextBlock Text="{Binding HINNumber}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                        <TextBlock Text="{Binding CategoryLetter}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
                        <TextBlock x:Name="category1" Text="{Binding Category1}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
                        <TextBlock Text="{Binding Category2}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
                        <TextBlock Text="{Binding Category3}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
1
Alex 1 मई 2011, 22:48
प्रत्येक सूची आइटम के लिए एक टेक्स्टब्लॉक होगा। यदि आप यह जानने की कोशिश कर रहे हैं कि किसी विशिष्ट वस्तु के लिए श्रेणी 1 क्या है, तो विवरण संग्रह में वास्तविक वस्तु का ही उपयोग क्यों न करें?
 – 
Russell Troywest
1 मई 2011, 23:08

2 जवाब

सबसे बढ़िया उत्तर

मान लें कि आप फ़ाइल के पीछे कोड में अपना कथन लिख रहे हैं, ऐसा कुछ नहीं होगा:

if(((WhateverTypeIsInDetailsCollection)HINList.SelectedItem).Category1 == something) {
     // then do whatever you want
}

जैसा कि रसेल ने बताया कि सूची में प्रत्येक प्रविष्टि के लिए एक श्रेणी 1 आइटम है। मुझे लगता है कि आप चयनित आइटम के साथ कुछ करना चाहते हैं।

1
Mr.Wizard 4 मई 2011, 15:57

यह xaml नेमस्कोप के कारण है। डेटा टेम्पलेट के अंदर के नाम बाहर की तुलना में एक अलग नेमस्कोप में हैं, इसलिए आप उन तक नहीं पहुंच सकते हैं (जो @ रसेल ने बताया है कि यह इस तरह से क्यों किया गया है)।

मुझे लगता है कि आप विवरण संग्रह के लिए बाध्य HINList ListBox के चयनित आइटम पर "श्रेणी 1" संपत्ति के लिए उस फ़ील्ड तक पहुंचना चाहते हैं। आप क्या कर सकते हैं श्रेणी 1 पर बाध्यकारी दो तरह से सेट करें, और सूची बॉक्स के SelectedItem को एक विवरण आइटम से बांधें जैसे:

एक्सएमएल:

<ListBox x:Name="HINList" ItemsSource="{Binding Details}"
         SelectedItem={Binding SelectedDetailItem, Mode=TwoWay}>
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Margin="0,0,0,17" Width="432">
        <TextBlock Text="{Binding Category1, Mode=TwoWay}" TextWrapping="Wrap" .../>
        <!-- the other fields -->
      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

कोड के पीछे

if(SelectedDetailsItem.Category1==...)
{
   ....
}

उम्मीद है ये मदद करेगा :)

0
AbdouMoumen 4 मई 2011, 16:13