home screen

Search



Number Of Result : 0

Result :


Thursday, December 4, 2008

Create A New CommandBinding

- Chúng ta mong muốn rằng 1 Control được Enable khi 1 điều kiện bất kỳ và ko cần phải nhất thiết kiểm tra liên tục các sự kiện xảy ra ở các Control khác. Ví dụ mình muốn Enable nút Delete để xóa Item đang được Selected và mình phải làm là mỗi lần Selected Change thì sẽ kiểm tra xem SelectedIndex >= 0 hay ko, nếu thỏa thì nút Delete sẽ được Enable và nếu = -1 thì nút Delete sẽ bị Disable...và còn rất nhiều ví dụ khác
- Chính vì vậy ta nghỉ đến ngay CommandBinding để làm điều đó
- Cách tạo CommandBinding cho Button


public static RoutedCommand Command_Button_Delete_Click = new RoutedCommand();
public void ExecutedCommand_Button_Delete_Click(object sender, ExecutedRoutedEventArgs e)
{
//thực hiện xóa 1 Item đang được Selected
...
}
public void CanExecuteCommand_Button_Delete_Click(object sender, CanExecuteRoutedEventArgs e)
{
//Enable button Delete khi SelectedIndex >= 0 ;
e.CanExecute = ListBox_ImageThumbnails.SelectedIndex >= 0;
}

- Kết nối CommandBinding vào Button

private void AddCommand(Button btn, ICommand command, ExecutedRoutedEventHandler exe, CanExecuteRoutedEventHandler canExe)
{
CommandBinding cmd = new CommandBinding(command, exe, canExe);
this.CommandBindings.Add(cmd);
btn.Command = command;
}

private void SetupCommandBinding()
{
//add Command vao trong Button Delete
AddCommand(Button_Delete, Command_Button_Delete_Click, ExecutedCommand_Button_Delete_Click, CanExecuteCommand_Button_Delete_Click);
...
}

- Sau khi hàm SetupCommandBinding() được gọi thì các lệnh CanExecuteCommand , và ExecutedCommand của Button Delete sẽ có hiệu lực

No comments: