Отобразить ссылки между текстом текстового блока и связать его с любым действием в модели представления - PullRequest
0 голосов
/ 28 ноября 2018

В настоящее время у меня есть текстовый блок в виде списка, который отображает комментарии, введенные пользователем.Если текст больше 150 символов, я показываю опцию «читать дальше».

<TextBlock x:Name="txtComment" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="4" TextWrapping="Wrap"
                           FontSize="14" FontFamily="Arial" Foreground="#4B4B4B" Height="Auto">
                    <TextBlock.Style>
                        <Style TargetType="{x:Type TextBlock}">                                
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding ElementName=tbReadMore, Path=IsChecked}" Value="True">
                                    <Setter Property="Text" Value="{Binding Path=comment}"/>
                                </DataTrigger>
                                <DataTrigger Binding="{Binding ElementName=tbReadMore, Path=IsChecked}" Value="False">
                                    <Setter Property="Text" Value="{Binding Path=comment,Converter={StaticResource StringFormatConverter150}}"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </TextBlock.Style>                        
                </TextBlock>                    
                <ToggleButton x:Name="tbReadMore" Grid.Row="5" Grid.Column="4" HorizontalAlignment="Right" BorderThickness="0" Background="Transparent" Foreground="#AEAEAE"
                              Visibility="{Binding Path=comment,Converter={StaticResource String150ToVisibilityConverter}}"
                              Style="{StaticResource ReadMoreLessLinkButton}" Tag="AncestorLevel 1">
                    <ToggleButton.Content>
                        <Grid>
                            <TextBlock Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1,AncestorType=ToggleButton},Path=IsChecked,Converter={StaticResource InverseBooleanToVisibilityConverter}}">                        
                                <Run Text="..."></Run>
                                <Run Text="Read More"></Run>
                            </TextBlock>
                            <TextBlock Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1,AncestorType=ToggleButton},Path=IsChecked,Converter={StaticResource BooleanToVisibiltyConverter}}">
                               <Run Text="..."></Run>
                                <Run Text="Less"></Run>
                            </TextBlock>
                        </Grid>
                    </ToggleButton.Content>
                </ToggleButton>

Спрашивается, что: Пользователь может ввести текст при добавлении комментария типа "Пожалуйста, обратитесь @ Link1 и @ Link2".Когда пользователь вводит текст «@», я показываю всплывающее окно для выбора значений, например, Link1 и Link2.В этом случае я хочу выделить слова @ Link1 & @ Link2 внутри текста текстового блока и поработать над нажатием этих ссылок.Второй ответ по использованию управления контентом в приведенной ниже ссылке выглядит как хороший подход: WPF - TextBlock Text + Hyperlink

Не могу понять, Могу ли я по-прежнему работать на дисплее ReadКнопки Больше / Меньше с этим подходом?

Или какой-либо другой подход должен использоваться для достижения этого требования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...