Я использую шаблон приложения Windows Phone Panorama App и использую LongListSelector, чтобы пользователи могли нажимать и просматривать детали элемента, указанного в длинном списке. Детали элементов доступны в файле DetailsPage.xaml. Мой код работает отлично, поэтому пользователи могут перейти к нужному элементу на DetailsPage.xaml, и содержимое видно им.Динамически генерировать текстовые блоки
<!--new text block -->
<TextBlock Text="{Binding Term_1}" Style="{StaticResource Textblock}" FontWeight="Bold" Foreground="{StaticResource PhoneAccentBrush}"/>
<TextBlock Text="{Binding Definition_1}" Style="{StaticResource Textblock}" Margin="10,0,0,20" TextWrapping="Wrap"/>
<TextBlock Text="{Binding Term_2}" Style="{StaticResource Textblock}" FontWeight="Bold" Foreground="{StaticResource PhoneAccentBrush}"/>
<TextBlock Text="{Binding Definition_2}" Style="{StaticResource Textblock}" Margin="10,0,0,20"/>
<TextBlock Text="{Binding Term_3}" Style="{StaticResource Textblock}" FontWeight="Bold" Foreground="{StaticResource PhoneAccentBrush}"/>
<TextBlock Text="{Binding Definition_3}" Style="{StaticResource Textblock}" Margin="10,0,0,20"/>
<TextBlock Text="{Binding Term_4}" Style="{StaticResource Textblock}" FontWeight="Bold" Foreground="{StaticResource PhoneAccentBrush}"/>
<TextBlock Text="{Binding Definition_4}" Style="{StaticResource Textblock}" Margin="10,0,0,20"/>
<TextBlock Text="{Binding Term_5}" Style="{StaticResource Textblock}" FontWeight="Bold" Foreground="{StaticResource PhoneAccentBrush}"/>
<TextBlock Text="{Binding Definition_5}" Style="{StaticResource Textblock}" Margin="10,0,0,20"/>
<TextBlock Text="{Binding Term_6}" Style="{StaticResource Textblock}" FontWeight="Bold" Foreground="{StaticResource PhoneAccentBrush}"/>
<TextBlock Text="{Binding Definition_6}" Style="{StaticResource Textblock}" Margin="10,0,0,20"/>
Моя проблема с тем, как отображаются элементы на DetailsPage.xaml. Например, если Вариант 1 в Longlistselector имеет 4 элемента, а Вариант 2 имеет шесть элементов, Вариант 2 выглядит отлично, но в Варианте 1 есть много пробелов в конце (возможно, выходящие из данных нет для Терминала 5 и Терминала 6). Если есть еще один вариант 3, состоящий всего из 1 элемента, вся подробная информация содержит много пробелов после отображения отдельного элемента. В некоторых вариантах у меня есть более 100 элементов, а лишние лишние пробелы в конце DetailPage просто раздражают. Я хотел бы знать, есть ли способ генерировать форматированные текстовые блоки вместе с привязанными ресурсами в DetailPage динамически, чтобы можно было удалить лишние пробелы? Если нет, как я могу показать только требуемые текстовые блоки для данного параметра?
Update: Это как данные загружены в текстовых блоков:
public void LoadData()
{
this.Items.Add(new ItemViewModel()
{
ID = "0",
Term_1 = "This is a term1",
Definition_1 = "This definition1",
Term_2 = "This is a term2",
Definition_2 = "This definition2",
Term_3 = "This is a term3",
Definition_3 = "This definition3",
Term_4 = "This is a term4",
Definition_4 = "This definition4",
Term_5 = "This is a term5",
Definition_5 = "This definition5",
});
this.Items.Add(new ItemViewModel()
{
ID = "1",`enter code here`
Term_1 = "This is a term1 for ID 1",
Definition_1 = "This definition1 for ID 1"
});
this.Items.Add(new ItemViewModel()
{
ID = "2",
Term_1 = "This is a term1 for ID 2",
Definition_1 = "This definition1 for ID 2"
});
this.Items.Add(new ItemViewModel()
{
ID = "3",
Term_1 = "This is a term1 for ID 3",
Definition_1 = "This definition1 for ID 3"
});
this.Items.Add(new ItemViewModel()
{
ID = "4",
Term_1 = "This is a term1 for ID 4",
Definition_1 = "This definition1 for ID 4"
});
this.Items.Add(new ItemViewModel()
{
ID = "5",
Term_1 = "This is a term1 for ID 5",
Definition_1 = "This definition1 for ID 5"
});
this.Items.Add(new ItemViewModel()
{
ID = "6",
Term_1 = "This is a term1 for ID 6",
Definition_1 = "This definition1 for ID 6"
});
Если я выбираю любую TextBlock, я буду получать термины и определения, указанные в соответствующем идентификатору Texblock. Если я выберу первый Textblock, я получу Условия/определения 1, 2, 3, 4, 5. Если я выберу другой текстовый блок, я получу только один термин/определение.
Вот как это точно происходит на выходе. Проблема в том, что Textblock для терминов 2, 3, 4, 5 и 6 вводит пробелы, если для этого идентификатора нет условий для отображения. Итак, пустые текстовые блоки съедают пробелы на экране. Я хотел бы, чтобы на странице сведений отображались только текстовые блоки, которые применимы для идентификатора, а затем прекратить их создание для остальных блоков для этого идентификатора.
Можете ли вы добавить дополнительный код и xaml, возможно, с некоторыми скриншотами, что пойдет не так и как вы хотите? Описание проблемы намекает на «DataTemplate» как часть ответа, но в этой очень сжатой форме очень сложно понять, что именно вы хотите. –
@WillemvanRumpt: добавлено больше информации о проблеме – Aiseduk
Я могу видеть, куда вы направляетесь, и какова ваша проблема, но она слишком велика, чтобы объяснять в разумном ответе, поэтому я оставлю некоторые подсказки в качестве комментария : Вместо определения «Term_1» через «Term_2» в качестве фиксированных свойств, определите их как одно свойство List-of-Term на ItemViewModel, содержащее столько «Условий», сколько вам нужно. Затем вы можете связать этот список с ItemsControl, который займет столько места, сколько нужно для отображения элементов. Поэтому вместо предварительного определения шести текстовых блоков вы можете использовать ListView (или что-то в этом роде) и привязываться к списку терминов. –