Почему некоторые привязки WPF не работают со свойствами IronRuby? - PullRequest
2 голосов
/ 31 июля 2010

Итак, допустим, у меня есть два почти идентичных класса в C # и Ruby:

C #

public class Test
{
    public Test()
    {
        ImageLocation = "http://www.ironruby.net/@api/deki/site/logo.png";
    }

    public string ImageLocation { get; set; }
}

Ruby

class Test
    attr_accessor :ImageLocation

    def initialize
      @ImageLocation = "http://www.ironruby.net/@api/deki/site/logo.png"
    end
end

Когда я связываюсь со свойством «ImageLocation» в C #, все три элемента управления связываются правильно.Когда я связываю то же свойство с объектом IronRuby, оно работает для TextBlock, но не для TextBox и Image.Вот мой XAML:

<Image Source="{Binding ImageLocation}" Width="50" />
<TextBlock Text="{Binding ImageLocation}" />
<TextBox Text="{Binding ImageLocation}" />

Почему привязка работает правильно для одного элемента управления, но не для других?

Ответы [ 2 ]

1 голос
/ 31 июля 2010

У типов IronRuby есть несколько проблем с привязкой WPF ... допустим, что она еще не идеальна:)

Чтобы решить вашу проблему, я рекомендую вам использовать классы и типы CLR. Например, чтобы ваш пример кода работал, просто преобразуйте эту строку:

@ImageLocation = "http://www.ironruby.net/@api/deki/site/logo.png"

К этому:

@ImageLocation = "http://www.ironruby.net/@api/deki/site/logo.png".to_clr_string
1 голос
/ 31 июля 2010

Книга Ивана Порто Карреро IronRuby в действии предлагает решение вашей проблемы.См. databinding.rb из исходного кода книги.

Это определенно не решит проблему, с которой вы столкнулись, и я сам ее пересмотрел.

Обновление: Ответ Шей работал и на меня.

...