[Silverlight][Windows Phone 7] 用 C# 動態加入Behavior

2010/12/23

很久以前發表過一篇文章  [Silverlight] Blend 做拖曳超簡單
介紹了使用 MouseDragElementBehavior
之前的文章是介紹用Blend 讓設計師可以在Design 時期來做…
但是有時候可能需要動態的將一個物件加入Behavior…

先介紹一下頁面配置…

blog-57

其實就是擺一張圖片進去 名字為 imgSample


看一下 XAML Code :


<UserControl x:Class="DynamicBehaviorSample.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="500" d:DesignWidth="500">

    <Grid x:Name="LayoutRoot" Background="White" Loaded="LayoutRoot_Loaded">
        <Image Height="162" HorizontalAlignment="Left"  Name="imgSample" Stretch="Fill" VerticalAlignment="Top" Width="213" Source="sample.jpg" />
    </Grid>
</UserControl>


其實也沒有做啥特別的事情真的是擺一張圖進去…

接下來就是撰寫讓 LayoutRoot 在Loaded 的時候把 MouseDragElementBehavior 加入倒 imgSample裡面…

不過首先我們得先引入兩個 dll

blog-53
在專案管理員那邊 對Reference 按滑鼠右鰎 選擇 Add Reference

blog-56
選取 System.Windows.Interactivity  和 Microsoft.Expression.Interactivity.Layout

之後就來看看 如何動態加入


private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
    
    MouseDragElementBehavior behaviorDrag=new MouseDragElementBehavior();

    //透過 Interaction 將 imgSample 加入 MouseDragElementBehavior
    Interaction.GetBehaviors(imgSample).Add(behaviorDrag);
}

透過這兩行就可以讓圖片擁有 MouseDragElementBehavior 的 Behavior …

不過記得


using System.Windows.Interactivity;
using Microsoft.Expression.Interactivity.Layout;


ps. 測試過了再 Windows Phone 7 一樣有效.
讚一下:


預覽:
檔案下載:


0 意見:

程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.