Привязка к свойству в экземпляре - PullRequest
1 голос
/ 23 февраля 2011

Я работаю над проектом, который получает данные из бэкэнда, т. Е. Данные постоянно меняются динамически, и внешний интерфейс не должен заботиться об этом.Мне нужно предоставить эти данные wpf так, чтобы кто-то мог связать их с данными в wpf с помощью выражения blend.Readonly в порядке.Короче говоря, как мне сделать привязку данных к свойству Foostring в экземпляре класса "foo" типа "Foo", если мой поток управления примерно такой:

 public partial class Window1 : window
 {
      public Window1()
      {
           InitializeComponent();
           Foo foo = new foo;
      }
   // my text box is defined in the xaml of this window.

 }

public ref class Foo
{
     Foo()
    {
         FooProperty = "work,dammit";
    }
    private string _foostring="";
    public string FooProperty
    {
       get {return _foostring;}
        set {foostring=value;} 

    }
}

Я могу получить вещи дляработать, если в конструкторе класса Foo я устанавливаю привязку к текстовому полю, и если я наследую от INotifyPropertyChanged и вызываю событие в настройке FooProperty.Однако, это не подвергает эту переменную смешиванию выражений - это на самом деле не установка источника данных.Я попытался установить привязку в xaml, и она компилируется, но не обновляется.Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 10 декабря 2011

[Ответ Rokujolady]
Для потомков я выложил решение: Я инстанцировал объект foo из c #, когда должен был инстанцировать из xaml, потому что xaml создавал свой собственный экземпляр, который не обновлялся, потому что я обновлял экземпляр c #. Очевидно, вы не можете ссылаться на объект, созданный в c # из xaml, но вы можете ссылаться на объект, созданный в xaml из c #. Код закончился так: XAML:

<Window.Resources>
<local:Foo x:Name "foo" x:Key="FooDataSource" d:IsDataSource="True"/>
...
</Window.Resources>
<Grid x:name="blah">
<Grid DataContext="{Binding Source={StaticResource FooDataSource}}">
<TextBlock x:Name="myText" Text="{Binding FooProperty, Mode=Default}"></TextBlock></Grid>

Код C # выглядел так:

public partial class Window1:window
{
     Foo myFooVariable = null;
     public Window1()
     {
          InitializeComponent();
          myFooVariable = this.Resources["FooDataSource"] as Foo;
          myFooVariable.FooString = "Work, Dammit";
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...