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;
}