【问题标题】:c# wpf DataGridCell set value from convertorc# wpf DataGridCell 从转换器设置值
【发布时间】:2017-05-21 17:59:48
【问题描述】:

我有这个 DataGridCell,它调用了这个转换器。当它在通过转换器后显示在数据网格中时,我期望该单元格的值为“hi”(因为我将单元格“content”设置为“hi”)。

我在这里做错了什么?

<DataGridTextColumn Width="60" Header="Google" CanUserResize="True" CanUserSort="True">
    <DataGridTextColumn.HeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="ToolTip" Value="Current Position on Google" />
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
        </Style>
    </DataGridTextColumn.HeaderStyle>
    <DataGridTextColumn.CellStyle>
        <Style TargetType="{x:Type DataGridCell}">
            <Setter Property="HorizontalAlignment" Value="Center"/>
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
            <EventSetter Event="MouseUp" Handler="IdUnselect"/>

            <Setter Property="Background"   Value="{Binding GoogleKeywordPositionMovementSinceLastWeekCheck, Converter={StaticResource NameToBrushConverter}}"/>
            <Setter Property="Content"      Value="{Binding Path=., Converter={StaticResource GooglePositionConvertor}}"/>

        </Style>
    </DataGridTextColumn.CellStyle>

</DataGridTextColumn>



public class GooglePositionConvertor : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        ResultCheckObject RankCheck = value as ResultCheckObject;

        return "hi";
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

【问题讨论】:

  • 您绑定到当前源 Path=.,但是您当前的源是什么!?在转换器中,您将值转换为 ResultCheckObject 但只返回“嗨”,如果您不使用它,为什么还要转换该值?
  • 如何通过转换器设置数据网格单元格的内容/文本?
  • 例如,您可以有一些属性 int 来绑定数据上下文,然后该属性值将通过转换器并返回
  • 现在想通了,需要在 DataGridTextColumn 中设置它,而不是使用

标签: c# wpf datagrid wpf-controls wpfdatagrid


【解决方案1】:

按以下方式通过转换器设置内容不起作用。

<Setter Property="Content" Value="{Binding Path=., Converter={StaticResource GooglePositionConvertor}}"/>

通过转换器设置它,如下所示

<DataGridTextColumn Width="60" Header="Google" Binding="{Binding Path=., Converter={StaticResource GooglePositionConvertor}}" CanUserResize="True" CanUserSort="True">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多