代码优先(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,但我想快速隔离问题。在我的原始代码中,它已正确完成。
冉冉说
相关分类