在我的應用程序中,我有一個UserControl,它代表對象的某種配置。在這裏面是一個包含所述對象名稱的Texblock。我希望能夠點擊這個Textblock並將它變成一個文本框,以便您可以編輯名稱。如何在單擊文本框時更新文本框的綁定
我希望它有以下3種行爲
- 設置當按下回車鍵
- 增益鍵盤焦點變爲可見時
- 在視圖模型中的值與視圖模型設定值時,鼠標點擊文本框外(像一個組合框)
,我目前卡在3. 如何讓我的文本框滿足要求uirement 3 - 點擊文本框設置值我已經實現了一些附件行爲,使其他2工作,但不能讓鼠標工作。
我曾嘗試以下
- 新增PreviewMouseDown事件 - 這似乎只在按下鼠標是在文本框中
- 新增PreviewMouseDown甚至在用戶控件,以獲得被檢測的 - 這似乎得到連撞當文本框被點擊。它也不是我窗口中唯一的用戶控件,所以它不會在更大的範圍內工作。
- 新增了一個PreviewMouseDownOutsideCapturedElement - 但永遠無法讓它觸發。
- 失去重心上都UpdateSourceTrigger和事件 - 當你點擊一個不同的輸入字段,而不僅僅是點擊關閉
的代碼爲我的文本框是如下這個工作,但只。
<TextBox x:Name="text" VerticalAlignment="Center"
Margin="5,2,0,0"
Text="{Binding Name, Mode=TwoWay}"
Visibility="{Binding IsEditingName, Converter={StaticResource VisConverter}, FallbackValue=Collapsed}"
b:FocusBehaviours.ShouldFocusWhenVisible="True"
b:InputBehaviours.UpdatePropertySourceWhenEnterPressed="TextBox.Text"/>
我已經看了無數SO職位,他們都似乎能夠幫助我,他們都建議將它添加到窗口/用戶控件,我不能這樣做。
把'UpdateSourceTrigger'設置爲'LostFocus'怎麼樣? – Pikoh
@Pikoh只有當你點擊另一個文本框或組合框而不是僅僅點擊它時,它才起作用。這就是我在Lost Binding和作爲事件時所指的意思,在寫它時我忘記了確切的名字,所以我將它編輯得更加清晰。謝謝 – Keithin8a
好的,所以你的意思是當你點擊你的用戶控件中的任何地方,而不是在另一個控件中,我是對的嗎?那麼你爲什麼不讓自己的用戶控件可以聚焦?我認爲這是更簡單的方法... – Pikoh