我学习卡利Micro和我创建类似本教程的一个项目:将控制在卡利微另一个控制
现在我想创建另一个用户控制并将其添加到上述模型。所以我创建了一个简单的用户控件,它与本教程中的shellViewModel基本相同。视图和视图模型与shellViewModel和ShellView相同,但名称不同。
当我运行应用程序时,我可以看到屏幕上显示该视图,但它不绑定到ViewModel。我应该对bootstrap进行任何更改,以便它有效吗?
更多信息: 我已经创建了一个类似于上述教程的wpf项目。 它运作良好。
我将一个新的用户控件添加到项目并将其命名为NewUCView。 所以我有以下的文件在我的项目:
NewUCView.xaml
<UserControl x:Class="CaliburnMicroTest.NewUCView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<StackPanel>
<TextBox x:Name="Name" />
<Button x:Name="SayHello"
Content="Click Me" />
</StackPanel>
</UserControl>
NewUCView.xaml.cs
namespace CaliburnMicroTest
{
/// <summary>
/// Interaction logic for NewUC.xaml
/// </summary>
public partial class NewUCView : UserControl
{
public NewUCView()
{
InitializeComponent();
}
}
}
NewUCViewModel.cs
namespace CaliburnMicroTest
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using global::Caliburn.Micro;
/// <summary>
/// TODO: Update summary.
/// </summary>
public class NewUCViewModel : PropertyChangedBase
{
string name;
public string Name
{
get { return name; }
set
{
name = value;
NotifyOfPropertyChange(() => Name);
NotifyOfPropertyChange(() => CanSayHello);
}
}
public bool CanSayHello
{
get { return !string.IsNullOrWhiteSpace(Name); }
}
public void SayHello()
{
MessageBox.Show(string.Format("Hello {0}!", Name)); //Don't do this in real life :)
}
}
}
我改变了ShellView如下所示,并将NewUCView的引用添加到其中。
<StackPanel>
<my:NewUCView x:Name="newUC" />
<TextBox x:Name="Name" />
<Button x:Name="SayHello"
Content="Click Me" />
</StackPanel>
也改变了ShellViewModel有一个叫newUC属性,它是一个NewUCViewModel如下:
private NewUCViewModel newUC=new NewUCViewModel();
public NewUCViewModel NewUC
{
get
{
return newUC;
}
}
但是当我运行该应用程序,并按下首先点击我(这是对用户控件) ,它不起作用。另一个按钮(在ShellView上)工作。
你能发表一些代码吗? – Klaus78
请参阅我向其中添加代码的问题。我可以上传项目,但我不知道如何。 – mans