我们在Ironpython 2.6和
Silverlight for Databinding,基于Luk_s提供的示例(:
http://gui-at.blogspot.com/2009/11/inotifypropertychanged-and-databinding.html
我们在程序化创建DataGrid列时创建绑定。因为我们用的是Ironpython
一些
对于通常与C一起使用的静态数据绑定技术,不起作用。
我一直在尝试(但失败了)在网格显示中获取列
基于数据绑定的不同颜色。
我有彩色的泡泡
显示
在网格中,但无法获取
数据绑定到要工作的颜色。首先是基础知识。
这是具有固定颜色的气泡的XAML:
<DataTemplate xmlns='http://schemas.microsoft.com/client/2007'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
<Ellipse Stroke="#FF222222" Height="15" Width="15">
<Ellipse.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop x:Name="bubbleColor" Offset="0.694"
Color="#FF00FF40" />
<GradientStop Color="#FFE6E6E6"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
我可以非常简单地添加基于此模板的列。loadXaml函数是围绕
XamlReader.Load
:
from com_modules.loadxaml import loadXaml
from System.Windows.Controls import DataGridTemplateColumn
column = DataGridTemplateColumn()
column.CellTemplate = loadXaml('templatecolumn')
column.Header = 'Bubble'
grid.Columns.Add(column)
如果我尝试在XAML中天真地指定一个绑定,那么我会得到一个
当我尝试加载XAML时,解析器的属性值不正确(因此不希望
加载后设置绑定):
<GradientStop x:Name="bubbleColor" Offset="0.694" Color="{Binding color}" />
我尝试的一种方法是创建一个价值转换器。这里是
我创建的类的骨架:
from System import Type
from System.Globalization import CultureInfo
from System.Windows.Data import IValueConverter
class ColorConverter(IValueConverter):
_clrnamespace = "Converters"
__metaclass__ = clrtype.ClrClass
@clrtype.accepts(object, Type, object, CultureInfo)
@clrtype.returns(object)
def Convert(self, value, targetType, parameter, culture):
pass
@clrtype.accepts(object, Type, object, CultureInfo)
@clrtype.returns(object)
def ConvertBack(self, value, targetType, parameter, culture):
pass
因为有一个
_clrnamespace
指定的,我认为我可以在XAML中使用此转换器。试图引用
ColorConverter
类中
Converters
资源字典中的命名空间在加载XAML时再次导致爆炸。
通过编程设置这一点是理想的。有人有什么想法吗?