Как привязать всплывающую подсказку к кнопке для разных условий - PullRequest
0 голосов
/ 01 марта 2012

Как динамически связывать всплывающую подсказку для различных условий
у нас есть 2 проекта в решении v используется среда PRISM GeneralBL содержит бизнес-логику, а StudentManagementUI содержит элементы управления пользователя, представления и ViewModels

Имеют 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);
    }

SharedLogicBL.cs в проекте GeneralBL

      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;
       }

В вышеприведенном методе проверьте, есть ли у пользователя права, если нет, всплывающая подсказка на кнопке «Пользователь не делает»t не имеет прав «Пусть первое условие истинно, в Orders.Any () возвращает false, тогда мы должны отобразить« у выбранного студента нет заказов »

Также есть свойство зависимости в StudentStatusUserControl.xaml.csдля этого StudentStatusUserControlBL в проекте GeneralBL

1 Ответ

1 голос
/ 08 марта 2012

Создайте в вашей модели представления публичное свойство, к которому вы можете привязать текст подсказки к кнопке 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";
           }

         }
}

Поскольку это свойство зависит от выбранного в данный момент элемента, вам нужно будет вызвать NotifyPropertyChanged ("Button1TooltipText") при изменении _selectedItem.

...