为了账号安全,请及时绑定邮箱和手机立即绑定

OnPropertyChange(null) 使超链接消失

OnPropertyChange(null) 使超链接消失

C#
阿波罗的战车 2021-11-28 20:02:27
代码优先(TextBox为了这个问题简化了上层):<TextBlock                Style="{StaticResource  FieldNameStyle }"                TextWrapping ="Wrap" Height="33" FontSize="12"                Visibility="Visible"                TextAlignment="Center"                Foreground="#FFFFFF"                Opacity="0.5"                                                      Text="{Binding UnderLineMsg}">                      <Hyperlink  Name="PrivacyNoticeLink2"                                                 Command="{Binding OpenPrivacyNoticeCommand}">                       <TextBlock                         Visibility="Visible"                        Name="privacyNoticeText2"                        Text="{Binding PrivacyNoticeButtonLabel,FallbackValue='privacy notice' ,UpdateSourceTrigger=PropertyChanged}"/>                                        </Hyperlink>             </TextBlock>这是第一次加载窗口后的样子:在 msg 填充符下:链接窗口中的事件之一触发对OnPropertyChanged(null);该方法在窗口中订阅它的所有成员中触发“刷新”: UpdateSourceTrigger=PropertyChanged一旦被调用,超链接元素就会完全消失(使用 Snoop 2.8 验证),因此调用后它将如下所示: 在 msg 填充符下:我不知道为什么会这样。当前的修复方法是用OnPropertyChanged许多特定的方法替换一般调用,但从长远来看这不是一个现实的选择。编辑: 将问题隔离到一个新项目中,注意当它只有一个文本块中的一个文本块时,问题仍然会发生带有触发 OnPropertyChanged 的按钮的简单 XAML<Grid>        <Button Click="Meh"   Margin="171,37,153,199">            PRESS ME        </Button>        <TextBlock  Name="WrapperText" Text= "{Binding randomNumber}">                <TextBlock  Name="linkText" Text="{Binding randomNumStr }"></TextBlock>        </TextBlock></Grid>后面的代码:public MainWindow()    {        DataContext = new Stuff();        InitializeComponent();    }请注意我触发属性更改的真正令人作呕的方式。我知道我应该在“Stuff”类中使用 Icommand,但我想快速隔离问题。在我的原始代码中,它已正确完成。
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

不要绑定 a 的Text属性TextBlock,你也添加了 aHyperlink到。引发PropertyChanged源属性的事件将清除Hyperlink.


您可以向其添加一个元素,而不是绑定自身的Text属性:TextBlockRun


<TextBlock

    TextWrapping ="Wrap" Height="33" FontSize="12"

    Visibility="Visible"

    TextAlignment="Center"

    Foreground="#FFFFFF"

    Opacity="0.5">  

    <Run Text="{Binding UnderLineMsg, Mode=OneWay}" />

    <Hyperlink  Name="PrivacyNoticeLink2" Command="{Binding OpenPrivacyNoticeCommand}">   

        <TextBlock 

            Visibility="Visible"

            Name="privacyNoticeText2"

            Text="{Binding PrivacyNoticeButtonLabel,FallbackValue='privacy notice' ,UpdateSourceTrigger=PropertyChanged}"/>                        

    </Hyperlink> 

</TextBlock>


查看完整回答
反对 回复 2021-11-28
  • 1 回答
  • 0 关注
  • 195 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信