简体   繁体   English

在WPF中更改DataGrid中数据绑定中的文本

[英]Change text in datagrid in databound, in wpf

I have a wpf datagrid, 我有一个wpf datagrid,

Here's my datagrid 这是我的数据网格

<dg:DataGrid x:Name="dataGrid" AutoGenerateColumns="false"
             ColumnHeaderStyle="{StaticResource columnHeaderStyle}"
             AlternationCount="2" RowBackground="Beige"
             RowStyle="{StaticResource rowStyle}"
             AlternatingRowBackground="LightBlue" 

             HeadersVisibility="All"
             HorizontalGridLinesBrush="#DDDDDD"
             VerticalGridLinesBrush="#DDDDDD" Grid.ColumnSpan="2" Margin="0,0,0,26" IsReadOnly="True" ColumnHeaderHeight="30">

            <dg:DataGrid.Columns>
                <dg:DataGridTextColumn Header=" Task Id" Binding="{Binding Path=TaskId}" Width="60" />
                <dg:DataGridTextColumn Header="Order Description" Binding="{Binding Path=OrderDescription}"  Width="120"/>
                <dg:DataGridTextColumn Header="Final Client Name" Binding="{Binding Path=ClientName}"  Width="110"/>
                <dg:DataGridTextColumn Header="Order Date" Binding="{Binding Path=OrderDate}"  Width="80"/>
                <dg:DataGridTextColumn Header="Task Description" Binding="{Binding Path=TaskDescription}"  Width="130"/>
                <dg:DataGridTextColumn Header="Group Name Short" Binding="{Binding Path=GroupNameShort}"  Width="116"/>
                <dg:DataGridTemplateColumn  MinWidth="100" Header=" Actions">
                    <dg:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Click="DetailButton_Click">Close</Button>
                        </DataTemplate>
                    </dg:DataGridTemplateColumn.CellTemplate>
                </dg:DataGridTemplateColumn>

            </dg:DataGrid.Columns>
        </dg:DataGrid>

In aspx to change text we use onrowdatabound for example, here in wpf how can I change the field Order Description and Order Date . 例如,在aspx中,使用onrowdatabound来更改文本,在wpf中,如何更改字段Order DescriptionOrder Date I have two functions to change the text, that are convertDatetimeToDate(string datetime) e htmltotext(string text). 我有两个函数来更改文本,它们是convertDatetimeToDate(string datetime)e htmltotext(string text)。

You can use a value converter on the binding. 您可以在绑定上使用值转换器。 Create a class that implements IValueConverter , and set an instance of that class as the Converter property of the binding. 创建一个实现IValueConverter的类,并将该类的实例设置为绑定的Converter属性。

public class DateTimeToDateConverter
    : IValueConverter
{
    public object Convert(
        object value, Type targetType, object parameter, CultureInfo culture)
    {
        // Call convertDatetimeToDate here and return the result
        return value;
    }

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

In your XAML, create an instance of the converter. 在您的XAML中,创建转换器的实例。 You may need to add a namespace reference: 您可能需要添加名称空间引用:

<Window.Resources xmlns:local="clr-namespace:YourNamespace">
    <local:DateTimeToDateConverter x:Key="myConverter"/>
</Window.Resources>

And use it in the binding: 并在绑定中使用它:

<dg:DataGridTextColumn
    Header="Order Date"
    Binding="{Binding Path=OrderDate, Converter={StaticResource myConverter}}"
    Width="80"/>

In 3.5 SP1 or later, you can also use the StringFormat property on the binding to do simple formatting. 在3.5 SP1或更高版本中,还可以在绑定上使用StringFormat属性进行简单的格式化。 This should format the datetime as a plain date by doing the equivalent of string.Format("{0:d}", OrderDate) : 这应该通过等效于string.Format("{0:d}", OrderDate)将日期时间格式化为纯日期:

<dg:DataGridTextColumn
    Header="Order Date"
    Binding="{Binding Path=OrderDate, StringFormat='{}{0:d}'}"
    Width="80"/>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM