Но я должен знать размер рядов перед правой рукой? Причина в том, что если текстовый контент и размер каждой строки должны быть равны содержимому.
Нет, вам не обязательно. Я предполагаю, что вы добавить текст содержания для каждого ListViewItem
, как это:
<ListView x:Name="listView" />
<Button VerticalAlignment="Bottom" Margin="0,5" Content="Add Text Item to ListView" Click="Button_Click" />
код позади:
private static string RandomString(int Size)
{
string input = "abcdefghijklmnopqrstuvwxyz";
var chars = Enumerable.Range(0, Size)
.Select(x => input[new Random().Next(0, input.Length)]);
return new string(chars.ToArray());
}
private void Button_Click(object sender, RoutedEventArgs e)
{
listView.Items.Add(RandomString(new Random().Next(1, 1000)));
}
Затем он будет генерировать по умолчанию TextBlock
содержать Text
:
Проблема заключается в том, что свойства TextBlock
имеют значение по умолчанию или вычисленное значение:
Это делает все детали имеет тот же размер, но причина не связана с контролем ListView
, если вы добавите содержание текста, как это:
private void Button_Click(object sender, RoutedEventArgs e)
{
TextBlock tb = new TextBlock();
tb.Text = RandomString(new Random().Next(1, 500));
tb.TextWrapping = TextWrapping.Wrap;
listView.Items.Add(tb);
}
Тогда вы можете найти разница:
Update:
Вы можете использовать DataTemplate
так:
<ListView x:Name="listView" ItemsSource="{x:Bind Collection}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding ItemText}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
код позади:
private ObservableCollection<Model> Collection = new ObservableCollection<Model>();
protected override void OnNavigatedTo(NavigationEventArgs e)
{
for (int i = 0; i < 50; i++)
{
Collection.Add(new Model { ItemText = RandomString(new Random().Next(100, 500)) });
}
}
public class Model
{
public string ItemText { get; set; }
}
Новый рендеринга изображения:
Я использовал по умолчанию 'ListView' и поставить 4 разных размера «Прямоугольник» как 4 предмета, вы можете выбрать e [рендеринг изображения] (https://i.stack.imgur.com/jAnD7.gif), поэтому «в отличие от ListView с фиксированной высотой строки». Что ты тогда имел в виду? –
Но я должен знать размер строк перед правой рукой? Причина в том, что если текстовый контент и размер каждой строки должны быть равны содержимому. – AbsoluteSith
Я написал ответ, чтобы объяснить это поведение, если у вас все еще есть вопрос, пожалуйста, оставьте комментарий. –