2011-01-02 17 views
5

लपेटकर नहीं मैं एक ListBox जो StackPanel एक TextBlock और क्षैतिज एक Image, एक ContentPresenter के बाद पकड़े रों है की है।WP7 TextBlock अंदर एक ListBox पाठ

<Grid x:Name="ContentPanel" 
     Grid.Row="1" 
     Margin="12,0,12,0"> 
    <ListBox x:Name="MainListBox" 
      Margin="12,0,12,0" 
      SelectionChanged="MainListBox_SelectionChanged"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 

     <StackPanel> 
      <toolkit:ContextMenuService.ContextMenu> 
      <toolkit:ContextMenu x:Name="ContextMenu" 
           Opened="ContextMenu_Opened"> 
       <toolkit:MenuItem Header="edit" 
           Tag="edit" 
           Click="MenuItem_Click" /> 
       <toolkit:MenuItem Header="delete" 
           Tag="delete" 
           Click="MenuItem_Click" /> 
      </toolkit:ContextMenu> 
      </toolkit:ContextMenuService.ContextMenu> 
      <StackPanel Orientation="Horizontal" 
         HorizontalAlignment="Left"> 

      <!-- **** This text won't wrap **** --> 
      <TextBlock Text="{Binding Header}" 
         TextWrapping="Wrap" 
         Style="{StaticResource PhoneTextNormalStyle}" 
         Foreground="{StaticResource PhoneAccentBrush}" /> 

      <Image Source="/image.png" 
        Visibility="{Binding ImageVisibility}" /> 

      </StackPanel> 

      <ContentPresenter Content="{Binding Content}" 
          HorizontalAlignment="Stretch" /> 

     </StackPanel> 

     </DataTemplate> 
    </ListBox.ItemTemplate> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
     <Setter Property="HorizontalContentAlignment" 
       Value="Stretch" /> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    </ListBox> 
</Grid> 

मैं पेज निर्माता के भीतर एक ObservableCollection को ListBox की ItemsSource सेट कर रहा हूं: यह क्या XAML लग रहा है की तरह है। सब कुछ ठीक काम करता है जब तक Header टेक्स्ट बहुत लंबा हो जाता है, इस स्थिति में यह लपेट नहीं रहा है जैसा कि मैंने इसे निर्दिष्ट किया है। पाठ को लपेटने के लिए मैं TextBlock को कैसे मजबूर कर सकता हूं?

आपकी मदद के लिए धन्यवाद!

उत्तर

8

यह टेक्स्टब्लॉक की चौड़ाई को सीमित नहीं करने का परिणाम है, इसलिए यह स्क्रीन से क्षैतिज बढ़ रहा है जहां आप इसे नहीं देख सकते हैं।

+0

लेकिन क्या टेक्स्टव्रपिंग संपत्ति उस पर ध्यान नहीं देनी चाहिए? क्या इस समस्या को हल करने का कोई और तरीका है? उदाहरण के लिए, UIElements को पकड़ने के लिए StackPanels के बजाय ग्रिड का उपयोग करना। – Praetorian

+0

मुझे यकीन नहीं है कि टेक्स्टव्रपिंग कैसे पता चलेगा कि क्षैतिज सीमा क्या है यदि यह किसी तरह से बाधित नहीं है। –

+0

आप सही थे, मैंने 'टेक्स्ट चेंज' ईवेंट को 'टेक्स्टबॉक्स' में जोड़कर और पृष्ठ की चौड़ाई के आधार पर अपनी चौड़ाई सेट करके समस्या को ठीक किया। – Praetorian