如何在TextBehind中将TextBox数据绑定到属性

Ere*_*rez 2 silverlight wpf blend expression-blend

我正在使用Expression Blend.

比方说我得到了:

Public string FirstName{get;set;}
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢你的答案,但我担心人们不理解我的问题.我知道如何在代码或XAML中绑定数据.

我的问题是,如果有一种方法可以使用Expression Blend接口完成所有这些操作而无需直接编写它.只有鼠标移动.

Gon*_*ing 5

您实际上想要将该属性放在View Model上,并使用XAML绑定,但这是另一个故事.

在描述您的示例时,您首先需要将"FirstName"属性实现为依赖项属性,而不是简单的get/set.这是来自Shawn Wildermuth的一个很好的代码片段,可以节省大量的输入(你需要解决的片段中有一个拼写错误 - "($ type $)args.NewValue ;"... NewValue的错误案例在片段).

您可以在XAML中绑定到一个简单的get/set属性,但它是单向/一次绑定,不会随更改而更新.

在代码中,绑定需要设置两件事.

  • 设置控件(或页面)的DataContext和
  • 在控件上设置数据绑定.

对于您提到的示例,您可以使用如下代码(假设在Xaml中名为myTextBox的TextBox控件):

using System.Windows;
using System.Windows.Controls;

namespace BindingCodeTest
{
    public partial class BindingCode : UserControl
    {
        public string FirstName
        {
            get { return (string)GetValue(FirstNameProperty); }
            set { SetValue(FirstNameProperty, value); }
        }

        // Using a DependencyProperty as the backing store for FirstName.  
        // This enables animation, styling, binding, etc...
        public static readonly DependencyProperty FirstNameProperty =
        DependencyProperty.Register("FirstName",
                                     typeof(string),
                                     typeof(BindingCode),
                                     new PropertyMetadata(string.Empty,
                                     new PropertyChangedCallback(OnFirstNameChanged)));

        static void OnFirstNameChanged(object sender, DependencyPropertyChangedEventArgs args)
        {
            // Get reference to self
            BindingCode source = (BindingCode)sender;

            // Add Handling Code
            string newValue = (string)args.NewValue;
        }

        public BindingCode()
        {
            InitializeComponent();
            myTextBox.DataContext = this;
            myTextBox.SetBinding(TextBox.TextProperty, new System.Windows.Data.Binding("FirstName"));
            FirstName = "First name";    // Sample change
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Vyv*_*vIT 5

在 Blend 4 中,在“数据”选项卡上 > 新建示例数据.. > 根据需要命名数据源,例如“MySampleDataSource”。然后您的“MySampleDataSource”将有一个带有 3 个选项的“+”按钮(右侧的相同数据选项卡)。选择“添加简单属性”并将其命名为“名字”。然后将该属性拖到您的 TextBox 或 TextBlock 上。

结果是这样的:

<TextBlock x:Name="firstName" Text="{Binding FirstName}"/>
Run Code Online (Sandbox Code Playgroud)