![](/img/trans.png)
[英]Correct approach to make a ListBox Page Navigation using MVVM on Windows Phone
[英]Page navigation using HubTiles, PRISM, and MVVM on Windows Phone
我正在嘗試使用WPToolkit,PRISM和MVVM設計中的HubTile控件。 我的問題是瀏覽頁面。
MainPageModel
private string _navigationUri;
public string NavigationUri
{
get { return _navigationUri; }
set
{
if (_navigationUri != value)
{
NotifyPropertyChanging();
_navigationUri = value;
NotifyPropertyChanged();
}
}
}
MainPageViewModel
private void Navigate(string s)
{
(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri(s, UriKind.RelativeOrAbsolute));
}
private DelegateCommand<string> _hubTileTap;
public DelegateCommand<string> HubTileTap
{
get { return _hubTileTap; }
}
_hubTileTap = new DelegateCommand<string>(Navigate);
XAML
<DataTemplate>
<toolkit:HubTile
Margin="10"
Size="Default"
Title="{Binding Title}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<i:InvokeCommandAction
Command="{Binding DataContext.HubTileTap}"
CommandParameter="{Binding NavigationUri}"></i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</toolkit:HubTile>
</DataTemplate>
放置一個斷點,我可以看到我的方法從未真正觸發過。 另外,說實話,我不確定100%是否正確設置了將字符串從HubTile對象傳遞給DelegateCommand然后傳遞給Method的正確方法。
我是MVVM,PRISM的新手,並且對編程還是不熟悉的。 謝謝你的幫助!
數據模板包含在什么內容中? 你有瓷磚的收藏嗎? 模板的上下文通常是項目。 因此,Title所在的位置是命令將觸發的位置。
編輯:您添加的內容,DataContext.HubTileTap將不起作用,在模板內部,DataContext是項。
使用Prism進行此操作的一種可能方法是對項目類進行操作。 然后,在創建項目時,將每個項目的操作設置為點擊方法。
public class EmptyClass
{
public ObservableCollection<HubTileItem> HubTiles { get; set; }
public EmptyClass()
{
HubTiles = new ObservableCollection<HubTileItem>();
HubTiles.Add(new HubTileItem { Title = "Tile1", HubTileTap = () => HubTileTap() };);
}
public void HubTileTap()
{
}
}
public class HubTileItem
{
public string Title { get; set; }
public Action HubTileTap { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.