0

我认为这对于 WPF 来说应该是一件简单的事情,但我无法让它工作......我的类上有一个 int 属性(Divisions),我想将它绑定到 DataGrid 列。

<DataGrid AutoGenerateColumns="False">
    <DataGrid.Columns>
            <DataGridTextColumn Header="Number of Divisions" Binding="{Binding Path=Divisions, StringFormat={}\{0:N0\}}" IsReadOnly="True"/>                
    </DataGrid.Columns>
</DataGrid>

但是,它没有出现。我也试过这段代码,它也对我不起作用:

<DataGrid AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Divisions" IsReadOnly="True">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=Divisions, StringFormat=C}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

为了测试目的,如果我向这个类添加一个字符串属性以返回 Divisions 的字符串值,它就可以正常工作。那么,这里有什么问题?

4

2 回答 2

4

有趣...我能够使用以下(在 VS 2010,.NET 4 中)示例轻松完成工作。

我的网格定义:

<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Number of Divisions" 
                            Binding="{Binding Path=Divisions,  StringFormat={}\{0:N0\}}" 
                            IsReadOnly="True"/>
    </DataGrid.Columns>
</DataGrid>

设置数据上下文:

this.DataContext = new List<MyItem>() { 
    new MyItem() { Divisions = 1 },
    new MyItem() { Divisions = 2 },
    new MyItem() { Divisions = 3 },
    new MyItem() { Divisions = 4 },
    new MyItem() { Divisions = 5 }
};

我的数据类定义:

public class MyItem {
    public int Divisions { get; set; } 
}

希望这可以帮助!

于 2010-09-11T05:02:11.270 回答
0

我不相信您正确指定了 StringFormats。

在第一个示例中,尝试删除转义字符,如下所示: StringFormat={}{0:N0}

在第二: StringFormat={}{0:C}

于 2010-09-11T05:04:36.053 回答