2012-07-11 10 views
10

अंदर लपेटकर नहीं मैं एक StackPanel है, लेकिन निम्न पंक्ति:TextBlock TextWrapping StackPanel

<TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding Notes}" TextWrapping="Wrap" /> 

पाठ रैपिंग नहीं है।

<StackPanel Orientation="Vertical"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="auto" /> 
      <ColumnDefinition Width="auto" /> 
      <ColumnDefinition Width="auto" /> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="auto" /> 
      <ColumnDefinition Width="5" /> 
      <ColumnDefinition Width="15" /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 

     <DockPanel Grid.Row="0" Grid.Column="0"> 
      <TextBlock FontWeight="Bold" Padding="0,0,5,0" Text="{Binding Path=Id, StringFormat='#\{0\}'}" /> 
      <TextBlock FontWeight="Bold" Padding="0,0,5,0" Text="{Binding Path=Name}" /> 
     </DockPanel> 
     <TextBlock Grid.Row="0" Grid.Column="4" FontWeight="Bold" Text="{Binding Path=Time, StringFormat={}{0:HH:mm}}" /> 
     <Image 
      Grid.Row="0" 
      Grid.Column="6" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Source="{Binding Path=Image, Mode=OneWay, Converter={StaticResource ImageConverter}}" /> 

     <TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding Notes}" TextWrapping="Wrap" /> 

     <Image 
      Grid.Row="1" 
      Grid.Column="4" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Top" 
      Source="{Binding Path=Picture, Mode=OneWay, Converter={StaticResource PictureConverter}}" /> 
    </Grid> 
</StackPanel> 

StackPanel अभिविन्यास 'कार्यक्षेत्र' पर सेट है लेकिन TextBlock यह विरासत में नहीं है।

मैं गलत कहां जा रहा हूं?

उत्तर

13

आपकी समस्या StackPanel का उपयोग कर रही है जो अपने बच्चों को सभी उपलब्ध स्थान भरने की अनुमति देती है - StackPanel इसकी सामग्री के आकार के अनुसार फैली हुई है। StackPanel को हटाने का प्रयास करें और केवल Grid रखें - इस तरह आप ग्रिड द्वारा उपयोग की जाने वाली उपलब्ध स्थान पर अपने बच्चों के आकार को सीमित कर देंगे।

यदि यह आपके द्वारा बनाए गए लेआउट में पर्याप्त नहीं है, तो TextBox पर मैक्सविड्थ सेट करने का प्रयास करें जिसे रैपिंग की आवश्यकता है।

अब आपकी समस्या का स्रोत यह तथ्य भी था कि TextBoxGrid के पहले कॉलम में डाला गया था जिसमें अनंत आकार (चौड़ाई = "ऑटो") था। इस प्रकार, ग्रिड.कॉलम = "7" को TextBox पर सेट करने वाली चाल आपने (इच्छित टेक्स्ट) किया था। यहां संशोधित कोड है:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="5" /> 
     <ColumnDefinition Width="15" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 

    <DockPanel Grid.Row="0" Grid.Column="0"> 
     <TextBlock FontWeight="Bold" Padding="0,0,5,0" Text="{Binding Path=Id, StringFormat='#\{0\}'}" /> 
     <TextBlock FontWeight="Bold" Padding="0,0,5,0" Text="{Binding Path=Name}" /> 
    </DockPanel> 
    <TextBlock Grid.Row="0" Grid.Column="4" FontWeight="Bold" Text="{Binding Path=Time, StringFormat={}{0:HH:mm}}" /> 
    <Image 
     Grid.Row="0" 
     Grid.Column="6" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     Source="{Binding Path=Image, Mode=OneWay, Converter={StaticResource ImageConverter}}" /> 

    <TextBlock Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="7" Text="{Binding Notes}" TextWrapping="Wrap" /> 

    <Image 
     Grid.Row="1" 
     Grid.Column="4" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Top" 
     Source="{Binding Path=Picture, Mode=OneWay, Converter={StaticResource PictureConverter}}" /> 
</Grid> 
+2

धन्यवाद एड्रियन, और स्पष्ट स्पष्टीकरण के लिए धन्यवाद। –

संबंधित मुद्दे