移动鼠标失控时禁用按钮

问题描述 投票:1回答:2

假设我有一个Telerik RadGridView,外面有一个按钮。当鼠标在RadGridView中单击行时,该按钮已启用。如果鼠标移动到RadGridView外部,则该按钮被禁用。

我的代码是

rgv_LostFocus(object sender, eventArgs e)
{
  // do something
   MyViewModel.IsButtonEnabled = false;
}

但是我不想使用代码。也许使用行为?

wpf mvvm telerik
2个回答
0
投票

你可以使用System.Windows.Interactivity的交互触发器和ChangedPropertyActionMicrosoft.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


0
投票

Per @ 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;
 }
© www.soinside.com 2019 - 2024. All rights reserved.