В PivotItem привязка ListBox не показывает значение

Я создаю коллекцию для отображения в ListBoxTransactions и связываю ее как Description. Но в результате у меня есть только коллекция имен в ListBoxTransactions.ItemsSource, но не значение. и не могу использовать ListBox.ItemTemplate

XAML

<phone:PivotItem Header="Journal">
      <Grid>
         <ListBox Name="ListBoxTransactions">
            <StackPanel Orientation="Horizontal">
               <TextBlock Text="{Binding Description}" FontSize="35"/>                            
            </StackPanel>
         </ListBox>
      </Grid>
</phone:PivotItem>

C#

public class TransactHelper
    {
        public string Description { get; set; }        
    }


public void ShowTransactions()
        {
            ListBoxTransactions.Items.Clear();
            var transactFulls = _workerDb.GeTransactFull();
            var list = new List<TransactHelper>();
            foreach (var t in transactFulls)
            {                
                list.Add(new TransactHelper { Description = t.Description });
            }

            this.ListBoxTransactions.ItemsSource = list; // dont view collection. only name collection

person Dmitry Zgursky    schedule 11.11.2014    source источник


Ответы (1)


Вы должны реализовать ItemContainerStyle для своих предметов.

<ListBox Name="ListBoxTransactions" ItemContainerStyle="{DynamicResource MyItemStyle}">
<ListBox.Resources>
    <Style x:Key="MyItemStyle" TargetType="{x:Type ListBoxItem}">
        <Setter Property="Template">
            <Setter.Value>
                 <ControlTemplate>
                     <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding Description}" FontSize="35"/>                            
                      </StackPanel>
                 </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ListBox.Resources>
</ListBox>

И сразу заметьте: не используйте эту пару

ListBoxTransactions.Items.Clear();
this.ListBoxTransactions.ItemsSource = list;

Тебе нужно

ListBoxTransactions.ItemsSource = null;
this.ListBoxTransactions.ItemsSource = list;

Или реализовать свою коллекцию как ObservableCollection

person Valera Scherbakov    schedule 11.11.2014