開發過windows phone或者Silverlight的人肯定知道有一個Interactive的dll,可以為元素添加Behavior和EventTrigger,但是在windows 8中官方沒有提供相應的類庫,但是不等於就沒辦法了,其實我們可以自己開發一個Interactive類庫的。這個類庫已經包含在我的開源類庫裡面了。下面我主要介紹下,如何利用EventTrigger來實現為模版中的元素繫結事件。
大家知道,在模板中是無法直接給控制項添加事件的,只能通過代碼的方式在擷取控制項後用代碼的方式添加。但是這種方式是非常麻煩的,麻煩的地方在於你要遍曆樹,在樹中擷取該控制項。而我們總希望能在模版中使用XAML代碼來實現事件的註冊,這樣豈不是很方便。那麼EventTrigger就是專門幹這事的,只要給EventTrigger指定事件的名稱,再指定事件觸發時的回調(ICommand)就可以實現這樣的功能。實現代碼如下:
<ControlTemplate x:Key="ContentControlTemplate" TargetType="ContentControl"> <Grid> <Button Content="Click Me"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click" Command="{Binding ClickCommand,Source={StaticResource MainPageViewModel}}" /> </i:Interaction.Triggers> </Button> </Grid> </ControlTemplate>
EventName就是指定事件的名稱,我這裡指定了Click,你可以把它替換成任何你想要的事件名稱。
這裡的Interactive的使用方式跟windows phone 和Silverlight中的使用方式沒有任何的區別。
為某個控制項添加行為方式可以使用Behavior來實現,使用方式不懂的可以Google。
源碼下載,包含了類庫源碼