0

如何为不同的条件动态绑定工具提示
我们有 2 个解决方案中的项目 v 正在使用 PRISM 框架 GeneralBL 包含业务逻辑,StudentManagementUI 包含用户控件、视图和视图模型

让 StudentStatusUserControl.xaml.cs 包含 Telerik RadButton

                 <telerik:RadButton Name="button1" Content="Stauses" Height="24" HorizontalAlignment="Left" VerticalAlignment="Top" Width="112" FontSize="12" Margin="2,2,2,2"
                prism:Click.Command="{Binding ButtonstatusCommand}">

这是为特定条件启用的,当它被禁用时,我们必须根据条件显示鼠标悬停或工具提示信息

在 StudentStatusViewModel.cs

    private bool CanExecuteButtonStatusCommand(object o)
    {
        return SharedLogicBL.CanExecuteButtonStatusCommand(controller,dataService,  _selectedItem);
    }

GeneralBL 项目中的 SharedLogicBL.cs

      public static bool CanExecuteUnplannedInspection(BaseController controller, DataService dataService, SDataItem selectedItem)
    {
       if(controller.currentuser.Isallowed())
          {
            if(selectedItem!=null)
               {
                 Orders = dataservice.GetOrders(selectedItem);
                  return !Orders.Any();
                }
            }
            else
               return false;
       }

在上述方法中检查用户是否有权限,如果没有 Tooltip 按钮“用户没有权限”让第一个条件为 true ,在 Orders.Any() 中返回 false 那么我们应该显示“选定的学生没有订单”

在 GeneralBL 项目中的 StudentStatusUserControlBL 的 StudentStatusUserControl.xaml.cs 中也有一个依赖属性

4

1 回答 1

1

在您的视图模型中创建一个公共属性,您可以将 Telerik 按钮工具提示文本数据绑定到该属性。

public string Button1TooltipText
{
    get { 
         if (!controller.currentuser.Isallowed())
           { return "User doesn't have the rights" }
         else
           { 
             if (!SharedLogicBL.CanExecuteButtonStatusCommand(controller, dataService, _selectedItem))
                 return "the selected student has no orders";
             else
                 return "Execute the unplanned inspection";
           }

         }
}

由于此属性取决于当前选定的项目,因此您需要在 _selectedItem 更改时调用 NotifyPropertyChanged("Button1TooltipText")。

于 2012-03-07T21:36:47.103 回答