teratail header banner
teratail header banner
質問するログイン新規登録
XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

Q&A

1回答

5859閲覧

WPFのListView のItemで表示を右詰めにしたい

mnhktm

総合スコア26

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

1グッド

0クリップ

投稿2022/02/06 14:11

1

0

お世話になります。

C# WPF でListViewを使ってデータを表示しています。
名前表示はそのまま左詰めで良いのですが、値(00000.000)は右詰めにしたいと考えております。
しかしやり方がよく判かりません。
データを登録し、クリック反転が固定されないような仕様ですが、動作は問題ありません。
1行は 名前 と 値となっており値を右詰めにしたいのです。宜しくお願いします。
以下XAMLのListView部を記載します。

XAML

1 <ListView ItemsSource="{Binding}" Name="ValView" HorizontalAlignment="Left" Margin="6,57,0,6" 2   Width="122" Background="#FF01040A" Foreground="#FF47D661" > 3 <ListView.View> 4 <GridView> 5 <GridViewColumn Header="名前" DisplayMemberBinding="{Binding Name}" Width="50"/> 6 <GridViewColumn Header="値" DisplayMemberBinding="{Binding Data}" Width="60"/> 7 </GridView> 8 </ListView.View> 9 <ListView.ItemContainerStyle> 10 <Style TargetType="ListViewItem"> 11 <Setter Property="Focusable" Value="false"/> 12 </Style> 13 </ListView.ItemContainerStyle> 14 </ListView>

 

cure_fontaine👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cure_fontaine

2022/02/15 05:21

>「WPF ListView 右詰め」で十分情報が出ますが、どこが分かりにくいでしょうか? 検索された情報については、一つもストレートに解説されたものがありません。読むだけ時間の無駄です。 mnhktmさんの回答が最もわかりやすいです。
TN8001

2022/02/17 22:04

cure_fontaineさん コメント場所を間違えていませんか? 回答の下部にコメントボタンがあります(コメントがない状態だと入力欄が出ずちょっとわかりにくいです) こちら(質問への追記・修正依頼欄)に書かれても、わたし(回答者)には通知が来ません。 1回でも何かしらここに書いた後なら通知が来るようになります(現状不具合で通知も当てになりませんが^^; > 検索された情報については、一つもストレートに解説されたものがありません。読むだけ時間の無駄です。 そうですか?「時間の無駄」は言い過ぎじゃないですか? 少なくとも私の回答は現時点で「WPF ListView 右詰め」検索結果3位の公式情報を、質問者さんのコードに合わせただけですけど。 個人的には一番の肝はListViewItemのHorizontalContentAlignmentをStretchすることだと思っているので、それに言及されていれば自力で十分達成可能と思っています。 > mnhktmさんの回答が最もわかりやすいです。 わたしのことですか?ありがとうございます。 わたしのポリシーは「コードを上げるなら完全に動作するコードを提示する」です。 よくusingがなかったり本題ではない部分が省略されたりしますが、コピペで試せないと(理解度にかかわらず)めんどくさいですからね。 文章で説明するよりコードを書くほうが楽というのもあります^^; 「一言余計だ」と感じたのでコメントされたのだと思うのですが、本当に純粋な疑問なんですよ。 > クリック反転が固定されないような仕様 > <Setter Property="Focusable" Value="false"/> とあるように質問者さんはそれなりにできそうな雰囲気があります。 調べていたらStretchがあると思うんですよ。 よく「それは試しましたがうまくいきませんでした」と後出しされることがありますが、「それを(それこそが一番大事なところなので)質問に書いてください」ということを言いたかったのです。 イヤミっぽく感じたのであればわたしの文章力のなさです。申し訳ありません。
guest

回答1

0

「WPF ListView 右詰め」で十分情報が出ますが、どこが分かりにくいでしょうか?
WPF ListView 右詰め - Google 検索

とりあえず公式にある方法でやってみます。
方法: ListView の列の水平方向の配置を変更する - WPF .NET Framework | Microsoft Docs

xml

1<Window 2 x:Class="Qegex68uha4a9gj.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 Width="800" 6 Height="450"> 7 <Grid> 8 <ListView ItemsSource="{Binding}"> 9 <ListView.Resources> 10 <DataTemplate x:Key="Data_RightTemplate"> 11 <TextBlock HorizontalAlignment="Right" Text="{Binding Data, StringFormat={}{0:00000.000}}" /> 12 </DataTemplate> 13 </ListView.Resources> 14 <ListView.ItemContainerStyle> 15 <Style TargetType="ListViewItem"> 16 <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 17 </Style> 18 </ListView.ItemContainerStyle> 19 <ListView.View> 20 <GridView> 21 <GridViewColumn 22 Width="200" 23 DisplayMemberBinding="{Binding Name}" 24 Header="名前" /> 25 26 <GridViewColumn 27 Width="200" 28 CellTemplate="{StaticResource Data_RightTemplate}" 29 Header="" /> 30 31 <!-- 直指定でもよし --> 32 <GridViewColumn Width="200" Header=""> 33 <GridViewColumn.CellTemplate> 34 <DataTemplate> 35 <TextBlock HorizontalAlignment="Right" Text="{Binding Data, StringFormat={}{0:00000.000}}" /> 36 </DataTemplate> 37 </GridViewColumn.CellTemplate> 38 </GridViewColumn> 39 </GridView> 40 </ListView.View> 41 </ListView> 42 </Grid> 43</Window>

cs

1using System; 2using System.Linq; 3using System.Windows; 4 5namespace Qegex68uha4a9gj 6{ 7 public class Item 8 { 9 public string? Name { get; set; } 10 public double Data { get; set; } 11 } 12 13 public partial class MainWindow : Window 14 { 15 public MainWindow() 16 { 17 InitializeComponent(); 18 19 DataContext = Enumerable.Range(1, 10) 20 .Select(x => new Item { Name = $"Name{x}", Data = 0.123456789 * Math.Pow(10, x), }) 21 .ToArray(); 22 } 23 } 24}

アプリ画像


XAMLタグだけでは見ていないので、気が付くのが遅くなりました。
WPFタグもつけていただけたらと思います。

投稿2022/02/10 12:16

編集2023/07/30 04:39
TN8001

総合スコア10114

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問