Привязка данных к текстовому полю в WPF - PullRequest
2 голосов
/ 12 мая 2009

Я совершенно новичок в привязке данных в WPF и пытаюсь привязать свойство объекта к текстовому полю. Мой объект

public class TestObj
{
    private m_Limit;

    public string Limit
    {
       get 
        {
         return m_Limit;
        }
        set
        {
          m_Limit = value;
        }
    }

Мой XAML выглядит как

<Window x:Class="NECSHarness2.UpdateJobParameters"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tools="clr-namespace:ManagementObjects;assembly=Core"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Title="Update Job Parameters" Height="320" Width="460">
<Grid>
    <TextBox Text ="{Binding Path = Limit, Mode = TwoWay}" Height="20" HorizontalAlignment="Right" Margin="0,48,29,0" Name="textBox3" VerticalAlignment="Top" Width="161" />
   </Grid>

Теперь, очевидно, я нигде не устанавливаю источник, и я очень смущен. Я получил это для работы со списком, но теперь я в тупике. Спасибо за любую помощь.

Ответы [ 4 ]

7 голосов
/ 12 мая 2009

Вам необходимо установить DataContext. Либо в коде позади:

textBox3.DataContext = instanceOfTestObj;

Или с помощью поставщика данных объекта

  <Window.Resources>
    <src:TestObj x:Key="theData" Limit="Wibble" />
  </Window.Resources>

  <TextBox Text="{Binding Source={StaticResource theData}..../>

Есть хорошее введение в привязку данных более подробно здесь .

2 голосов
/ 12 мая 2009

Для работы привязки TwoWay ваш объект также должен реализовывать INotifyPropertyChanged

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx

2 голосов
/ 12 мая 2009

Если вы не указываете привязку Source, RelativeSource или ElementName, привязка использует DataContext элемента управления. DataContext передается через визуальное дерево от верхнего элемента (например, Window) к нижнему (TextBox в вашем случае).

Таким образом, WPF будет искать свойство Limit в вашем классе Window (потому что вы связали DataContext окна с самим окном).

Кроме того, вы можете прочитать основы привязки данных в WPF: http://msdn.microsoft.com/en-us/library/ms750612.aspx

1 голос
/ 12 мая 2009

Если не указано иное, источником привязки всегда является DataContext элемента управления. Вы должны установить DataContext для вашей формы на экземпляр TestObj

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...