如何绑定文本框和属性?

时间:2011-05-27 23:40:45

标签: wpf silverlight silverlight-4.0 binding

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
    xmlns:System_Windows_Controls_Primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Toolkit"
    x:Class="SilverlightApplication5.MainPage"
    Width="640" Height="480">
    <StackPanel x:Name="LayoutRoot" Background="White">
        <TextBox x:Name="tbWidth" TextWrapping="Wrap" 
           Text="{Binding Mode=TwoWay, ValidatesOnExceptions=True, Path=RoomWidth}"/>
        </StackPanel>
</UserControl>

RoomWidth - 属性。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightApplication5
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }
        private int roomWidth = 10;
        public int RoomWidth
        {
            get { return roomWidth; }
            set
            {
                if (value < 0 || value > 100)
                {
                    throw new Exception("Data not correct");
                }
                roomWidth = value;
            }
        }

    }
}

我需要在这个类中添加Binding源代码。这是怎么回事?

2 个答案:

答案 0 :(得分:3)

例如使用ElementName

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" xmlns:System_Windows_Controls_Primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Toolkit"
    x:Class="SilverlightApplication5.MainPage"
    Width="640" Height="480"
    Name="control">

    <!-- ... -->
    <TextBox Text="{Binding ElementName=control, Mode=TwoWay, ValidatesOnExceptions=True, Path=RoomWidth}" x:Name="tbWidth" TextWrapping="Wrap"/>

如果您遇到类似基本绑定的问题,您可以阅读它。 (WPF / Silverlight

答案 1 :(得分:1)

DataContext = this;

将它放在构造函数中。