Silverlight 一个值在数据网格中显示两列

Silverlight 一个值在数据网格中显示两列,silverlight,Silverlight,我有一个包含3个值的XML,它们是“名称”、“部门”、“值”。我想显示一个包含四列的数据网格,如名称、部门、贷方和借方。当“值”列中的值为正值时,我希望在借方列中输入值,在贷方列中输入0,反之亦然。有几种方法可以解决此问题。最干净的方法可能是为credit和debit添加一个DataGridTemplateColumn,将两个列绑定到“Value”,然后通过使用绑定到“Value”和转换器切换用于解析值的元素(例如TextBlock)的可见性属性。 例如: 借方的转换器几乎相同,只是“值>=0部

我有一个包含3个值的XML,它们是“名称”、“部门”、“值”。我想显示一个包含四列的数据网格,如名称、部门、贷方和借方。当“值”列中的值为正值时,我希望在借方列中输入值,在贷方列中输入0,反之亦然。

有几种方法可以解决此问题。最干净的方法可能是为credit和debit添加一个DataGridTemplateColumn,将两个列绑定到“Value”,然后通过使用绑定到“Value”和转换器切换用于解析值的元素(例如TextBlock)的可见性属性。 例如:

借方的转换器几乎相同,只是“值>=0部分”当然更改为“值<0”

干杯,亚历克斯

    <DataGrid
        AutoGenerateColumns="False">
        <DataGrid.Resources>
            <converters:ValueToVisibilityConverter
                x:Key="ValueToVisibilityConverter" />
        </DataGrid.Resources>
        <DataGrid.Columns>
            <DataGridTemplateColumn
                Header="Credit">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock
                            Text="{Binding Path=Value}"
                            Visibility="{Binding Path=Value, Converter={StaticResource CreditToVisibilityConverter}}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn
                Header="Debit">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock
                            Text="{Binding Path=Value}"
                            Visibility="{Binding Path=Value, Converter={StaticResource DebitToVisibilityConverter}}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>
public class CreditToVisibilityConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return (double)value >= 0 ? Visibility.Visible : Visibility.Collapsed;
    }

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

    #endregion
}