2011-05-25 83 views
1

任何人都有線索如何去創建自定義選擇器?基本上我想要導航到一個頁面,在該頁面上選擇一些數據並通過一些EventArg返回一個對象。WP7創建自定義選擇器/任務

東西類似於WP7如何任務/挑肥揀瘦現在的工作,我可以這樣做:

CustomChooserTask task = new CustomChooserTask(); 
task.Completed += new EventHandler<CustomResult>(task_Completed); 
task.Show(); 

回答

2

一個選擇器是不是你正在嘗試做正確的方法。

任務/啓動器/選擇器是讓您的應用程序與手機的核心功能進行交互的手段,同時允許用戶清楚發生的事情。

由於您沒有與手機的核心功能或數據進行交互,所以創建一些試圖模仿它的內容可能會令人困惑。

一個簡單的方法可以讓你的需求有一個全局變量(或等價物),並有啓動(選擇器)頁面填充該變量。在返回原始(請求)頁面時,它可以檢查全局變量。不幸的是,沒有辦法以這種方式在頁面之間傳回數據。 (至少沒有得到非常有創意的你的後臺操縱。)

或者,你可以看看ListPicker如何在Toolkit工作和實現類似的東西。

+2

+1 - 挑肥揀瘦的建立是爲了允許第三方開發者接入到電話的更加受限制的區域。你不需要在同一個應用中做同樣的事情。 – keyboardP 2011-05-26 14:59:07

1

我知道這有點老了,其他人都說這不是一個好主意。但我相信有時候能夠實施選擇任務是很方便的。對我來說,一個明顯的例子是,如果你想讓用戶從那裏選擇一張照片庫,拍一張照片或者在屏幕上畫一些東西。

這些都需要返回相同的結果,但繪製自己的沒有選擇器。因此,實施一個將很好,讓您的代碼簡單。你有一個案例陳述,告訴選擇什麼激活。

反正這裏是一些代碼,我寫了創建自定義choosertask(它不是100%完成,但它應該給你一個想法):

using System; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Ink; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using Microsoft.Phone.Tasks; 
using System.Windows.Controls.Primitives; 

namespace tasks { 


public class imageResult : TaskEventArgs { 

    public System.IO.Stream image { get; set; } 
} 


public class imageChooserTask : ChooserBase<imageResult> { 

    public override void Show() { 
     Popup p = new Popup(); 
     p.IsOpen = true; 
     imageSelector cs = new imageSelector(); 
     p.Child = cs; 
     p.Closed += new EventHandler(p_Closed); 
    } 

    void p_Closed(object sender, EventArgs e) { 
     Popup p = sender as Popup; 
     TaskResult tr = (TaskResult)p.Tag; 
     //some logic to add stream 
     FireCompleted(sender, new imageResult(), null); 
    } 


} 
}