将DataGrid的FontWeight属性绑定到值转换器

时间:2011-11-25 23:15:53

标签: c# silverlight xaml

如果在DataGrid中使用new / old项目但是偶然发现错误,我正在尝试使单元格变粗或正常..

看起来我的问题在这里描述:Why can I not bind the Visiblity of a DataGridTemplateColumn in Silverlight 4?

我收到了以下错误:

  

“System.Windows.Data.Binding”类型的对象无法转换为   输入'System.Windows.FontWeight'。

我的XAML看起来像这样:

<sdk:DataGridTextColumn Header="Subject" Binding="{Binding Subject}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" FontWeight="{Binding IsNew, Converter={StaticResource BoolToFontWeightConverter}}" />

我的问题是有任何解决方法让这个工作吗?我甚至没有使用模板列,它是纯文本列..

public class BoolToFontWeightConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return ((bool)value) ? FontWeights.Bold : FontWeights.Normal;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (FontWeight)value == FontWeights.Bold;
        }
    }

1 个答案:

答案 0 :(得分:3)

DataGridTextColumn的FontWeight属性不是依赖项属性,因此不支持绑定。解决方法是使用带有TextBox的DataGridTemplateColumn作为DataTemplate并在那里设置适当的绑定,如:

<sdk:DataGridTemplateColumn Header="Subject" 
                    CanUserReorder="True"
                    CanUserResize="True"
                    CanUserSort="True"
                    Width="Auto">
    <sdk:DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
        <TextBlock Text="{Binding Subject}" FontWeight="{Binding IsNew, Converter={StaticResource BoolToFontWeightConverter}}"/>
      </DataTemplate>
    </sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>