0

私はそれが WPF の簡単なことだと思っていましたが、それを機能させることはできません... クラスに int プロパティ (部門) があり、それを 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}

2番目に: StringFormat={}{0:C}

于 2010-09-11T05:04:36.053 に答える