我學習卡利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