我想學習Caliburn micro在Windows Phone 8應用程序開發中使用。但是我面臨的問題是它僅適用於主視圖模型,並且無法將任何其他視圖模型連接到其視圖。這是除主頁以外的其他頁面的代碼。請建議解決這個問題。在此先感謝Caliburn Micro for Windows Phone 8不能正常工作
的Page1.xaml
<phone:PhoneApplicationPage
x:Class="CalibMicro.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the application and page title-->
<StackPanel Grid.Row="0" Margin="12,17,0,28">
<TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock x:Name="TextBox2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="50" />
</Grid>
</Grid>
</phone:PhoneApplicationPage>
Page1ViewModel
using System.Windows;
namespace CalibMicro {
public class Page1ViewModel : Caliburn.Micro.PropertyChangedBase
{
public Page1ViewModel()
{
MessageBox.Show("Hello World !");
TextBox2 = "Hello World";
}
private string _textBox2;
public string TextBox2
{
get { return _textBox2; }
set
{
_textBox2 = value;
NotifyOfPropertyChange(() => TextBox2);
}
}
}
}
AppBootStrapper
namespace CalibMicro {
using System;
using System.Collections.Generic;
using System.Windows.Controls;
using Microsoft.Phone.Controls;
using Caliburn.Micro;
public class AppBootstrapper : PhoneBootstrapperBase {
PhoneContainer container;
public AppBootstrapper() {
Initialize();
}
protected override void Configure() {
container = new PhoneContainer();
if (!Execute.InDesignMode)
container.RegisterPhoneServices(RootFrame);
container.PerRequest<MainPageViewModel>();
container.PerRequest<Page1ViewModel>();
AddCustomConventions();
}
protected override object GetInstance(Type service, string key) {
var instance = container.GetInstance(service, key);
if (instance != null)
return instance;
throw new InvalidOperationException("Could not locate any instances.");
}
protected override IEnumerable<object> GetAllInstances(Type service) {
return container.GetAllInstances(service);
}
protected override void BuildUp(object instance) {
container.BuildUp(instance);
}
static void AddCustomConventions() {
ConventionManager.AddElementConvention<Pivot>(Pivot.ItemsSourceProperty, "SelectedItem", "SelectionChanged").ApplyBinding =
(viewModelType, path, property, element, convention) => {
if (ConventionManager
.GetElementConvention(typeof(ItemsControl))
.ApplyBinding(viewModelType, path, property, element, convention)) {
ConventionManager
.ConfigureSelectedItem(element, Pivot.SelectedItemProperty, viewModelType, path);
ConventionManager
.ApplyHeaderTemplate(element, Pivot.HeaderTemplateProperty, null, viewModelType);
return true;
}
return false;
};
ConventionManager.AddElementConvention<Panorama>(Panorama.ItemsSourceProperty, "SelectedItem", "SelectionChanged").ApplyBinding =
(viewModelType, path, property, element, convention) => {
if (ConventionManager
.GetElementConvention(typeof(ItemsControl))
.ApplyBinding(viewModelType, path, property, element, convention)) {
ConventionManager
.ConfigureSelectedItem(element, Panorama.SelectedItemProperty, viewModelType, path);
ConventionManager
.ApplyHeaderTemplate(element, Panorama.HeaderTemplateProperty, null, viewModelType);
return true;
}
return false;
};
}
}
}
中對Page1做了初始導航頁面它的工作..謝謝 –