0
我試圖從視圖模型將焦點設置一定的UIElement依賴的對象要做到這一點我已經寫了一個附加的依賴項屬性如下:設置焦點從視圖模型不能正常工作
#region IsFocusedProperty
public static readonly DependencyProperty IsFocusedProperty =
DependencyProperty.RegisterAttached("IsFocused", typeof(bool), typeof(AttachedProperties),
new FrameworkPropertyMetadata(false,
new PropertyChangedCallback(OnIsFocusedChanged)));
private static void OnIsFocusedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var obj = d as UIElement;
var oldValue = (bool)e.OldValue;
var newValue = (bool)e.NewValue;
if (oldValue != newValue && !obj.IsFocused)
{
obj.Focus();
}
}
public static void SetIsFoused(UIElement element, bool value)
{
element.SetValue(IsFocusedProperty, value);
}
public static bool GetIsFocused(UIElement element)
{
return (bool)element.GetValue(IsFocusedProperty);
}
#endregion
我應該說它工作並將焦點發送到指定的元素,除非當我將鼠標光標移動到視圖中的每個元素(包括焦點所在的指定元素)上時,沒有鼠標事件觸發。我這樣說是因爲我已經爲元素的IsMouseOverProperty編寫了觸發器,但是當焦點以這種方式發送到指定的元素時,會出現未觸發事件。
我也應該說觸發器再次正常工作,當我點擊視圖上的任何地方。我真的不知道問題是什麼?請分享你的想法。任何想法將不勝感激。提前致謝。
編輯: 我已經想通了,該元素獲得鍵盤焦點,但顯然不是邏輯焦點,因爲當我將光標移動到前一個元素,它仍然觸發MouseMove事件。
我還不確定是什麼問題?
謝謝@ d.moncada但它仍然無法正常工作。 – user3530012