Windows 8 绑定到控件';Windows 8 Metro风格应用程序中的s FocusState

Windows 8 绑定到控件';Windows 8 Metro风格应用程序中的s FocusState,windows-8,winrt-xaml,xaml-binding,Windows 8,Winrt Xaml,Xaml Binding,我使用以下代码将RichTextBlock.Visibility属性绑定到另一个控件的FocusState属性 <RichTextBlock FontFamily="Segoe UI" FontSize="22" FontWeight="Light" Foreground="{StaticResource SwiftLightTextBrush}" Visibi

我使用以下代码将
RichTextBlock.Visibility
属性绑定到另一个控件的
FocusState
属性

 <RichTextBlock FontFamily="Segoe UI" FontSize="22" FontWeight="Light" 
                               Foreground="{StaticResource SwiftLightTextBrush}" 
                               Visibility="{Binding ElementName=ProfessionalHeadlineInput, Path=FocusState, Converter={StaticResource FocusStateToVisibilityConverter}}" >
这可能是一个新手问题,但是为什么当我“聚焦”到目标元素(
ProfessionalHeadlineInput
是使用鼠标或选项卡导航的
TextBox
element)时,为什么不应用绑定

我已将断点插入到
Convert
方法中,但当我单击或“tabing”到
ProfessionalHeadlineInput
文本框时,不会调用断点


NB重要部分-我的项目是一个Windows 8 Metro风格的应用程序。

确保
FocusState
DP
,确保它确实发生了变化 我在这里看到的唯一原因-
FocusState
可能不会改变,其他一切看起来都很好。 另外,尝试显式设置
Mode=OneWay
UpdateSourceTrigger=PropertyChanged

我在Microsoft论坛上收到Matt Small的一封邮件:

好的-这实际上是FocusState的一个bug-它没有更新值。我在我们的数据库中发现了一个漏洞。谢谢你提起这件事


我已将
模式设置为
单向
FocusState
是一个
DP
,它实际上已更改,并且正确触发了
GotFocus
LostFocus
事件。但是,该绑定在页面初始化期间仅应用一次。
public object Convert(object value, Type targetType, object parameter, string language)
{
    var focusState = (FocusState)value;

    return focusState == FocusState.Keyboard || focusState == FocusState.Pointer || focusState == FocusState.Programmatic ? Visibility.Visible : Visibility.Collapsed;
}