2010-09-03 94 views
0

我有一个WPF的DataGrid,更改文本在数据绑定的数据网格中,WPF

这里是我的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> 

在ASPX改变我们使用onrowdatabound例如文本,这里在WPF我怎样才能改变该字段订单描述订单日期。 我有两个函数来更改文本,即convertDatetimeToDate(字符串日期时间)和htmltotext(字符串文本)。

回答

2

您可以在绑定上使用值转换器。创建一个实现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"/> 
+0

这是行得通的。 Tks很多Quartermeister – Luis 2010-09-03 14:23:29