2012-03-01 27 views
0

如何動態綁定提示條件不同,
我們有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}"> 

這是一個特定條件&啓用時,它被禁止,我們必須SH流鼠標懸停或工具提示信息取決於病症

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

在上述方法中檢查,以查看用戶是否有權利,如果沒有Tooltip上的按鈕「用戶沒有權利」 先讓條件成立,在Orders.Any()返回false然後我們應該顯示「選定的學生沒有訂單」

也有這個StudentStatusUserControlBL在StudentStatusUserControl.xaml.cs依賴項屬性在GeneralBL項目

+1

在您的ViewModel'字符串Tip'中添加一個INPC屬性並將按鈕ToolTip綁定到該值 – 2012-03-01 18:16:06

回答

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

     } 
} 

由於此屬性取決於當前選定的項目,你需要調用NotifyPropertyChanged(「Button1TooltipText」)時_selectedItem變化。

相關問題