Изменить текст в сетке данных в графе данных, в wpf - PullRequest
0 голосов
/ 03 сентября 2010

У меня есть таблица данных wpf,

Вот моя таблица данных

<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>

В aspx для изменения текста мы используем onrowdatabound, например, здесь, в wpf, как я могу изменить поле Описание заказа и Дата заказа . У меня есть две функции для изменения текста, а именно: convertDatetimeToDate (строка datetime) и htmltotext (строка текста).

1 Ответ

2 голосов
/ 03 сентября 2010

Вы можете использовать конвертер значений в привязке. Создайте класс, который реализует 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();
    }
}

В вашем XAML создайте экземпляр конвертера. Возможно, вам потребуется добавить ссылку на пространство имен:

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

И используйте это в привязке:

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

В 3.5 SP1 или новее вы также можете использовать свойство StringFormat в привязке для простого форматирования. Это должно отформатировать дату и время как обычную дату, выполнив эквивалент string.Format("{0:d}", OrderDate):

<dg:DataGridTextColumn
    Header="Order Date"
    Binding="{Binding Path=OrderDate, StringFormat='{}{0:d}'}"
    Width="80"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...