为什么某些WPF绑定会对IronRuby属性失败?

时间:2010-07-31 01:05:51

标签: wpf data-binding binding ironruby

所以,假设我在C#和Ruby中有两个几乎相同的类:

C#

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

    public string ImageLocation { get; set; }
}

红宝石

class Test
    attr_accessor :ImageLocation

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

当我绑定到C#中的“ImageLocation”属性时,所有三个控件都正确绑定。当我使用IronRuby对象绑定到同一属性时,它适用于TextBlock,但TextBoxImage失败。这是我的XAML:

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

为什么绑定对一个控件有效,而对其他控件无效?

2 个答案:

答案 0 :(得分:1)

Ivan Porto Carrero的书IronRuby in Action提供了解决问题的方法。请参阅本书源代码中的databinding.rb

这绝对不能解决你遇到的问题,而且我自己也重新制作了它。

更新: Shay的回答也适用于我。

答案 1 :(得分:1)

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