Silverlight 将double绑定到Datagrid列MaxWidth属性

Silverlight 将double绑定到Datagrid列MaxWidth属性,silverlight,binding,datagrid,ivalueconverter,Silverlight,Binding,Datagrid,Ivalueconverter,我有一个datagrid,我想通过绑定设置其列的MaxWidth属性。我有一个转换器可以将“binding”更改为“double”,但该转换器从未被命中,应用程序会在出现xaml错误时停止:“System.Windows.Data.binding”无法转换为“System.double”类型。当我在datagrid MaxWidth属性之外的其他属性上使用转换器时,它可以正常工作。为什么这不起作用 <Grid.Resources> <Converter:DoubleCo

我有一个datagrid,我想通过绑定设置其列的MaxWidth属性。我有一个转换器可以将“binding”更改为“double”,但该转换器从未被命中,应用程序会在出现xaml错误时停止:“System.Windows.Data.binding”无法转换为“System.double”类型。当我在datagrid MaxWidth属性之外的其他属性上使用转换器时,它可以正常工作。为什么这不起作用

<Grid.Resources>
    <Converter:DoubleConverter x:Key="ConverterForDoubles" />
</Grid.Resources>

<data:DataGridTextColumn Header="Task ID" Binding="{Binding TaskId}" 
MaxWidth="{Binding Source={StaticResource MainViewModel}, Path=TaskIdColumnMaxWidth,
Mode=TwoWay, Converter={StaticResource ConverterForDoubles}}" />

DataGridTextColumn.MaxWidth不是依赖项属性,因此无法绑定到它

它只是抱怨存在
“{Binding…}”
,而它期望从XAML解析一个双精度值


解决方案包括添加附加属性或子类化DataGridTextColumn,并添加一个在设置MaxWidth时设置MaxWidth的依赖项属性。

发现这有助于绑定到setters:

这不是转换器应该做的事情吗?从绑定转换为您需要的任何内容?不。恐怕不是。转换器只是在不同类型的值之间进行转换。目标必须是依赖项属性,才能通过
SetValue
进行设置(这是转换器返回后在幕后发生的事情)。