如何将控件绑定到对象属性?

时间:2015-10-02 13:49:41

标签: c# wpf mvvm

我以前从未使用过WPF,只有WinForms而且我试图关注this tutorial,但示例代码真的很糟糕。不完整的片段和很多内容留给读者来推断一切都属于哪里。

它正在谈论添加数据绑定并比较这个C#代码:

  

using CustomerViewModel;

到此XAML代码:

  

xmlns:custns="clr-namespace:CustomerViewModel;assembly=CustomerViewModel"

但是这篇文章似乎没有显示这里应该去的。下面它说你不需要实际编写绑定代码,而是可以使用Visual Studio中的UI / Property表,但VS2010看起来不像那些截图,所以我试图这样做

无论如何,这就是我在XAML中为我的应用程序所拥有的Window

<Window x:Class="NYMS_Rewrite.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:custns="clr-namespace:NYMS_Rewrite.view_models.FormProcessorViewModel;assembly=NYMS_Rewrite.view_models.FormProcessorViewModel"
  Title="NYMS Logical Checks" Height="606" Width="525" Background="AliceBlue" DataContext="{Binding}">

但是,此代码无法编译,并且正在向我发出此错误:

  

using namespace指令只能应用于名称空间; NYMS_Rewrite.view_models.FormProcessorViewModel是一种类型而不是命名空间;

如果我双击错误,我需要MainWindow.g.cs(这到底是什么!?它不会在我的解决方案资源管理器中显示)

第一行是using声明:

using NYMS_Rewrite.view_models.FormProcessorViewModel;

我已经尝试缩短到using NYMS_Rewrite.view_models;,但是一旦我编译它就会回到原来的状态。我假设这是由我的XAML生成的,但即使我将其更改为clr-namespace:NYMS_Rewrite.view_models;assembly=NYMS_Rewrite.view_models,我仍然会得到相同的结果。

该类定义如下:

namespace NYMS_Rewrite.view_models
{
    class FormProcessorViewModel
    {
        // stuff
    }
}

所以我不知道它为什么认为它是一个无效的命名空间。我想做的就是将几个文本框绑定到我的视图模型的字符串属性。

编辑已修复,使用Abin的答案工作XAML:

<Window x:Class="NYMS_Rewrite.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:fpvm="clr-namespace:NYMS_Rewrite.view_models"
  Title="NYMS Logical Checks" Height="606" Width="525" Background="AliceBlue" DataContext="{Binding}">
    <Window.Resources>
        <fpvm:FormProcessorViewModel x:Key="fpvmObj" />
    </Window.Resources>

1 个答案:

答案 0 :(得分:1)

错误是由于错误的xmlns:custns="clr-namespace:NYMS_Rewrite.view_models.FormProcessorViewModel;ass‌​embly=NYMS_Rewrite.view_models.FormProcessorViewModel"

尝试从XAML中移除ViewModel并指定指向XAML compiler

的正确名称空间

错误是因为namespace无法找到您指定的ViewModel。首先,您必须构建xmlns:Utility="clr-namespace:ecclient.viewer.Utility"项目。

例如xmlns xml name space = UtilityXAML是您可以在clr-namespace:中使用的别名, <?php function sendEmail(**$SendTo, $SubjectLine, $MsgBody,$SendFrom**) { $mail = null; $mail = new PHPMailer(true); $mail->IsSMTP(); try { $mail->Host = "Host Name Enter"; // SMTP server $mail->SMTPDebug = 0; // enables SMTP debug information (for testing) $mail->SMTPAuth = true; // enable SMTP authentication // sets the SMTP server $mail->Port = 2525; // set the SMTP port for the GMAIL server $mail->Username = "Enter SMTP Username"; // SMTP account username $mail->Password = "Enter Password"; // SMTP account password $mail->AddAddress($SendTo); $mail->SetFrom($SendFrom, 'Subject To'**); $mail->Subject = $subject; // $mail->AddEmbeddedImage('uploads/'.$res['user_img'], 'prf'); // <img height='100' width='100' style='border 5px solid gray;' `enter code here`src='cid:prf' alt='' /> $mail->MsgHTML($MsgBody); return $mail->Send(); } catch (Exception enter code hereon $e) { echo $e; } $mail->ClearAllRecipients(); } ?> ----------- OR ----------- $SendFrom = "To: $msgTo\r\n"; $SendFrom .= "From: no-reply@email.com\r\n"; $SendFrom .= "Bcc: $bcc\r\n"; $SendFrom .= "X-Mailer: PHP".phpversion(); 表示您指的是名称空间,而不是您的名称空间。