Основное крепление Silverlight - PullRequest
0 голосов
/ 30 марта 2012

Я не могу понять, почему изменения связывания в моем большом проекте не будут работать. Я упростил его до примера проекта, который все еще не работает. Я хотел бы продолжить задавать текст данных как я в настоящее время, если это возможно, потому что так делает другой проект. С помощью следующего кода текст в SomeText не отображается в текстовом поле. Как мне это исправить?

Код сзади:

public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
        DataContext = new ViewModel();
    }
}

Класс данных:

public class ViewModel
{
    public string SomeText = "This is some text.";
}

Основной пользовательский контроль:

  <UserControl xmlns:ig="http://schemas.infragistics.com/xaml"          x:Class="XamGridVisibilityBindingTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:XamGridVisibilityBindingTest="clr-namespace:XamGridVisibilityBindingTest" mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">
        <TextBox Text="{Binding SomeText}" BorderBrush="#FFE80F0F" Width="100" Height="50">    </TextBox>
    </Grid>
</UserControl>

Редактировать: я пытаюсь выполнить одностороннюю привязку.

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Вам нужно использовать свойство, заставить виртуальную машину наследоваться от INotifyPropertyChanged и вызывать событие PropertyChanged при каждом изменении SomeText:

public class ViewModel : INotifyPropertyChanged
{
    private string someText;

    public event PropertyChangedEventHandler PropertyChanged;

    public string SomeText 
    {
        get { return someText; }
        set 
        { 
            someText = value; 
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs("SomeText"));
            }
        }
    }

    public ViewModel()
    {
        SomeText = "This is some text.";
    }
}
0 голосов
/ 30 марта 2012

Я понял, вы можете привязать только к свойствам!

public class ViewModel
{
    public string SomeText { get; set; } 

    public ViewModel()
    {
        SomeText = "This is some text.";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...