Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How binding textbox and property?

<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 - is property.

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;
            }
        }

    }
}

I need add to Binding source this class. How do this?

like image 641
Mediator Avatar asked Oct 10 '22 22:10

Mediator


2 Answers

Use the ElementName for example:

<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"/>

If you have problems with basic bindings like that you sould read up on it. (WPF/Silverlight)

like image 111
H.B. Avatar answered Oct 20 '22 00:10

H.B.


DataContext = this;

Put this inside of your constructor.

like image 25
Mike Avatar answered Oct 20 '22 00:10

Mike