鼠标失控时禁用按钮
Disable button when move mouse out of control
假设我有一个Telerik RadGridView,外面有一个按钮。当鼠标单击 RadGridView 中的行时,该按钮被启用。如果鼠标移到 RadGridView 之外,则该按钮将被禁用。
我的密码是
rgv_LostFocus(object sender, eventArgs e)
{
// do something
MyViewModel.IsButtonEnabled = false;
}
但是我不想使用隐藏代码。也许使用行为?
您可以使用来自 System.Windows.Interactivity and a ChangedPropertyAction
from Microsoft.Expression.Interactions.dll 的交互触发器:
<telerik:RadGridView xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions">
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<ei:ChangePropertyAction TargetObject="{Binding}" TargetName="IsButtonEnabled" Value="false" />
</i:EventTrigger>
</i:Interaction.Triggers>
...
</telerik:RadGridView>
有关如何在 MVVM 应用程序中处理事件的信息,请参阅 this blog post。
根据@mm8 提示。
<telerik:RadGridView xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<i:InvokeCommandAction Command="{Binding LostFocusCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</telerik:RadGridView>
然后在 ViewModel 中,
public DelegateCommand LostFocusCommand = new DelegateCommand(RadGridViewLostFocus);
在方法 'RadGridViewLostFocus' 中将 bool 属性 设置为 false;
private void RadGridViewLostFocus()
{
IsButtonEnabled = false;
}
假设我有一个Telerik RadGridView,外面有一个按钮。当鼠标单击 RadGridView 中的行时,该按钮被启用。如果鼠标移到 RadGridView 之外,则该按钮将被禁用。
我的密码是
rgv_LostFocus(object sender, eventArgs e)
{
// do something
MyViewModel.IsButtonEnabled = false;
}
但是我不想使用隐藏代码。也许使用行为?
您可以使用来自 System.Windows.Interactivity and a ChangedPropertyAction
from Microsoft.Expression.Interactions.dll 的交互触发器:
<telerik:RadGridView xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions">
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<ei:ChangePropertyAction TargetObject="{Binding}" TargetName="IsButtonEnabled" Value="false" />
</i:EventTrigger>
</i:Interaction.Triggers>
...
</telerik:RadGridView>
有关如何在 MVVM 应用程序中处理事件的信息,请参阅 this blog post。
根据@mm8 提示。
<telerik:RadGridView xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<i:InvokeCommandAction Command="{Binding LostFocusCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</telerik:RadGridView>
然后在 ViewModel 中,
public DelegateCommand LostFocusCommand = new DelegateCommand(RadGridViewLostFocus);
在方法 'RadGridViewLostFocus' 中将 bool 属性 设置为 false;
private void RadGridViewLostFocus()
{
IsButtonEnabled = false;
}