У меня есть флип-просмотр, который заполняется каким-то кодом (я не понимаю, как модифицировать приложение).
<FlipView x:Name="ArticleDetail" Grid.Row="1" AutomationProperties.AutomationId="ItemsFlipView" AutomationProperties.Name="Item Details" TabIndex="1"
DataContext="{Binding LatestArticlesModel}"
ItemsSource="{Binding Items}"
ItemTemplate="{StaticResource LatestArticles1DetailDetail}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
ItemContainerStyle="{StaticResource FlipItemStyle}">
</FlipView>
<!--Data template for flipview-->
<DataTemplate x:Key="LatestArticles1DetailDetail">
<ScrollViewer>
<StackPanel>
<TextBlock Margin="0,16"
Text="{Binding Title, Converter={StaticResource TextPlainConverter}, ConverterParameter = 140}"
Style="{StaticResource SubHeaderText}" />
<Image Source="{Binding ImageUrl, Converter={StaticResource ThumbnailConverter}, ConverterParameter=300}" Stretch="UniformToFill" />
<TextBlock
x:Name="FeedUrl"
Margin="0,12" Style="{StaticResource Html2XamlStyleText}"
Text="{Binding FeedUrl}"
Visibility="Collapsed"/>
<RichTextBlock
x:Name="Content"
Margin="0,12"
Style="{StaticResource Html2XamlStyle}"/>
</StackPanel>
</ScrollViewer>
</DataTemplate>
Из текстового блока с именем «FeedUrl» я хочу извлечь URL-адрес, который в нем хранится.
Используйте URL-адрес для анализа html-страницы, на которую указывает этот URL-адрес.
После обработки отобразите некоторый контент в расширенном текстовом блоке с именем «контент».
Единственная проблема, с которой я сталкиваюсь, заключается в том, как получить ссылку на текстовый блок и богатый текстовый блок внутри каждого элемента флип-просмотра.
Для получения ссылки на элементы я пробовал два решения:
- Я пробовал этот код, но строка
var myTextBlock= _Children.OfType<TextBlock>().FirstOrDefault(c => c.Name.Equals("test"));
конкретно
.OfType<TextBlock>()
выдает ошибку
'System.Collections.Generic.List<Windows.UI.Xaml.Controls.TextBlock>' does not contain a definition for 'OfType' and no extension method 'OfType' accepting a first argument of type 'System.Collections.Generic.List<Windows.UI.Xaml.Controls.TextBlock>' could be found (are you missing a using directive or an assembly reference?)
- Я также попробовал другое решение, данное здесь, но я всегда получаю нулевую ссылку.
Я также получаю предупреждение о строке
var item = itemsControl.ItemContainerGenerator.ContainerFromItem(o);
Windows.UI.Xaml.Controls.ItemContainerGenerator.ContainerFromItem(o); is obsolote.'ContainerForm' may be unavailable for releases after Windows Phone 8.1. Use itemsControl.ContainerFromItem instead.
Даже если я использую itemsControl.ContainerFromItem
, он всегда возвращает нулевую ссылку.
Пожалуйста помоги
ОБНОВИТЬ:
я использую следующее
if(!statusiop.statusup){
this.UpdateLayout();
for (int i = 0; i < ArticleDetail.Items.Count; i++)
{
var fvItem = this.ArticleDetail.Items[i];
var container = this.ArticleDetail.ContainerFromItem(fvItem);
if (container == null)
{
Text = "null container";
}
else
{
var tbFeedURL = FindElementByName<TextBlock>(container, "FeedUrl");
if (tbFeedURL == null)
{
test.Text = "null text";
}
else
{
tbFeedURL.Text = tbFeedURL.Text + "Test";
}
}
}
Я перебираю все элементы во флип-просмотре и изменяю данные по мере необходимости. Я также использую общедоступный статический класс
public static class statusiop
{
public static Boolean statusup= false;
}
который содержит элемент statusup. statusup служит флагом, который, если он равен true, указывает, что данные Flipview были обновлены один раз и не нуждаются в обновлении снова.