سؤال

ولدي TextBlock التي هي في الشبكة التي هي ItemTemplate لListView. لدي العناصر بحيث تنمو عند تغيير حجم النافذة، ولكن أنا لا يمكن معرفة كيف يكون أن يقتصر على TextBlock إلى هذا الحجم. لقد حاولت أن تفعل هذا مع العرض على ColumnDefinition - إذا أنا تعيين العرض إلى عدد ثابت (ويقول 350) النص يلتف بشكل صحيح، ولكن من الواضح أن TextBlock لا توسيع عندما يتم توسيع نافذة - إذا أنا وضعت عرض ل"*" وهناك ثم شريط التمرير الأفقي والنص يمتد خارج إلى اليمين ولا التفاف.

وأي فكرة عما أفعله خطأ هنا؟

<GroupBox Header="Urgent Items" Margin="8,8,8,340" Name="UrgetItemsGroupBox">
    <Grid>
        <ListView Margin="6" Name="CriticalErrorsListView" HorizontalContentAlignment="Stretch" ItemsSource="{Binding Path=.}" MouseDoubleClick="CriticalErrorsListView_MouseDoubleClick">
            <ListView.Background>
                <LinearGradientBrush EndPoint="-0.192,0.529" StartPoint="0.998,0.519">
                    <GradientStop Color="#FFD2D2D2" Offset="0"/>
                    <GradientStop Color="#FFFFFFFF" Offset="1"/>
                </LinearGradientBrush>
            </ListView.Background>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Border Margin="2,2,2,3" BorderBrush="#FF847F6E" CornerRadius="10" BorderThickness="3">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="30" />
                                <ColumnDefinition Width="10" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="25" />
                                <RowDefinition Height="20" />
                                <RowDefinition Height="20" />
                                <RowDefinition Height="75" />
                            </Grid.RowDefinitions>
                            <Image Grid.Row="0" Grid.RowSpan="5" Grid.Column="0" Margin="2,2,2,2" Source="Images\errorIcon.png" />
                            <TextBlock Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="2,2,2,2" Text="{Binding Path=ApplicationName}" FontFamily="Calibri" FontWeight="Bold" FontSize="18" />
                            <TextBlock Grid.Row="1" Grid.Column="2" Margin="10,2,10,2" Text="{Binding Path=ErrorTime}" FontFamily="Calibri" FontSize="12" />
                            <TextBlock Grid.Row="2" Grid.Column="2" Margin="10,2,10,2" Text="{Binding Path=ErrorPerson}" FontFamily="Calibri" FontSize="12" />
                            <TextBlock Grid.Row="3" Grid.Column="2" Margin="2,2,2,2" Text="{Binding Path=ShortDescription}" TextWrapping="Wrap" />
                        </Grid>
                    </Border>                            
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</GroupBox>
هل كانت مفيدة؟

المحلول

وتشاهد شريط التمرير الأفقي لListView يستخدم ScrollViewer في قالب للسماح التمرير. كل ما عليك القيام به هو القول ScrollViewer لعدم التمرير أفقيا. مجرد مجموعة <م> ScrollViewer.HorizontalScrollBarVisibility = "معطل" في ListView الخاص بك. لذلك سيكون لديك شيء من هذا القبيل:

<ListView Margin="6"
          ScrollViewer.HorizontalScrollBarVisibility="Disabled"
          Name="CriticalErrorsListView"
          HorizontalContentAlignment="Stretch"
          ItemsSource="{Binding Path=.}"
          MouseDoubleClick="CriticalErrorsListView_MouseDoubleClick">
     <!-- The rest goes here. -->
</ListView>

وآمل أن يساعد هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top