2012-05-15 78 views
0

我正在使用以下代碼將RichTextBlock.Visibility屬性綁定到另一個控件的FocusState屬性。在Windows 8 Metro風格應用程序中綁定到控件的FocusState

<RichTextBlock FontFamily="Segoe UI" FontSize="22" FontWeight="Light" 
           Foreground="{StaticResource SwiftLightTextBrush}" 
           Visibility="{Binding ElementName=ProfessionalHeadlineInput, Path=FocusState, Converter={StaticResource FocusStateToVisibilityConverter}}" > 

FocusStateToVisibilityConverter.Convert的implentation如下:

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

它可以是新手問題,但爲什麼當我「聚焦」到目標元件的結合不被施加(ProfessionalHeadlineInput是一個TextBox元素)使用鼠標或標籤導航?

我已經將斷點插入到Convert方法中,但當我單擊或「跳轉」到文本框時,它不會被調用。

NB重要的部分 - 我的項目是Windows 8 Metro風格應用程序。

回答

1

我在微軟論壇得到了來自馬特小的answer

OK - 這其實是FocusState錯誤 - 它不更新的價值。我正在提交數據庫中的一個錯誤。感謝您爲此付出代價。

1

確保FocusStateDP,確保它實際上chages 我在這裏看到的唯一原因 - FocusState可能不會改變,一切看起來不錯。 另外,儘量明確設置Mode=OneWayUpdateSourceTrigger=PropertyChanged

+0

我設置了'Mode'爲'OneWay'。 'FocusState'是一個'DP',它實際上已經改變,以及'GotFocus'和'LostFocus'事件被正確觸發。但是,在頁面初始化期間,綁定僅應用一次。 – danyloid

相關問題