2017-01-05 6 views
0

私は、XAMLで、次のしている:ここではC# - WPF - リストバインド<int>をStatusBarで印刷するには?

<StatusBarItem Content="{Binding CorrectGuesses}" Height="30" VerticalAlignment="Top" HorizontalContentAlignment="Center" /> 

CorrectGuessesList<int>です。リスト内の実際の数値をステータスバーに出力するコードが必要ですが、今は(Collection)と表示されています。 StatusBarItemContentがリストの項目になるようにするには何が必要ですか?ありがとうございました!

+1

これはWPFの権利ですか? – abdul

+0

はい、私の間違い、申し訳ありません。 –

+0

Converterを追加すると、すべての数値が出力されます。 ' – Kevorkian

答えて

0

すべての数値を出力するようにコンバータを追加します。あなたのXAMLページ内

namespace AppConverters  
public class List2StringConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, 
      object parameter, CultureInfo culture) 
     { 
      List<int> listNumbers = value as List<int>; 
      // separator : , -/... or white space 
      return string.join("separator",listNumbers); 
     } 

     public object ConvertBack(object value, Type targetType, 
      object parameter, CultureInfo culture) 
     { 
      // To Do 
     } 
    } 

スキーマとして、あなたの窓のタグに次の行を追加します。次のように

<Window.Resources> 
     <app:List2StringConverter x:Key="L2StringConverter"/> 
</Window.Resources> 

それを使用します:

xmlns:app="clr-namespace:AppConverters" 

も追加

<StatusBarItem Content="{Binding CorrectGuesses,Converter={StaticResource L2StringConverter}}" Height="30" VerticalAlignment="Top" HorizontalContentAlignment="Center" /> 
+0

です。これは多くの点でsoooooが間違っています!このような愚かさのためにコンバータを使用しないでください... – Jaster

+0

**真剣にこれは間違っています!** – Jaster

-1
<StatusBarItem Height="30" VerticalAlignment="Top" HorizontalContentAlignment="Center"> 
     <ItemsControl ItemsSource="{Binding CorrectGuesses}"> 
      <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Orientation="Horizontal"/> 
       </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding}"/> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
</StatusBarItem> 
+0

数字の間にスペースを入れないので、区別がつかないという点を除いて、これはうまくいくようです。 –

+0

もちろん、そのテキストブロックです。ラベルを使用するか、余白をテキストブロックに追加するか、それ以外の方法で配置します。最も簡単なのは、マージン= "3,0"のテキストブロック – Jaster