2

値をリストボックスにバインドしていますが、文字列が適切な形式で表示されていません。

ex私の文字列のような

abc               10
abcd              20
asdfas            30

パディングを使用して最初の文字列に30の固定長を作成しました

str1.PadRight(30) + str2.PadRight(2)

それから私もそのような値を取得しています

abc     10
abcd        20
asdfas            30

文字列の間に同じスペースを入れる方法を提案してください

4

3 に答える 3

2

通常、Windows ユーザー インターフェイスは可変幅フォントを使用するため、特定の列にスペースを埋め込んでテキストを揃えることはできません。

等幅フォント (Courier や Lucida Console など) を使用するように ListBox を設定するか、列をサポートする ListView (または同様のもの) を使用するか、アイテムの表示方法を制御できるようにオーナー描画アイテムを実装する必要があります。テキストを分割して列に描画します。

于 2012-06-27T13:50:55.153 に答える
0

WindowsフォームListBoxは複数の列をサポートしています。コンストラクターのドキュメントに例があります。

これはデータバインディングでは機能しない可能性がありますが。その場合、おそらくListView代わりに使用する必要があります。

于 2012-06-27T13:59:38.863 に答える
0

テキストと数値をラップする ViewModel を作成します。

class MyViewModel
{
    public string Text { get; set; }
    public int Number { get; set; }
}

次に、レイアウトを行うListBoxanを指定します。ItemTemplate

<ListBox>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <DockPanel>
                <TextBlock DockPanel.Dock="Left"
                           Text="{Binding Text}"/>
                <TextBlock DockPanel.Dock="Right"
                           Text="{Binding Number}"/>
            </DockPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
于 2012-06-27T14:05:01.187 に答える