2014-01-21 3 views
0

Я пытаюсь связать пользовательский контроль внутри списка, но кажется, что я делаю что-то неправильно, хотя я следовал How to bind data user control inside listbox WP8, но это не помогло.Как связать управление данными пользователя внутри списка

Вот что я делаю в пользовательском элементе управления

<Grid x:Name="LayoutRoot" Background="Transparent" > 
<Grid.RowDefinitions> 
    <RowDefinition Height="*"/> 
</Grid.RowDefinitions> 
<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto"></ColumnDefinition> 
    <ColumnDefinition Width="*"></ColumnDefinition> 
    <ColumnDefinition Width="*"></ColumnDefinition> 
</Grid.ColumnDefinitions> 
<Image Source="Images/download.png" Width="30" Height="30" VerticalAlignment="Top" Grid.Column="0"/> 
<ProgressBar Grid.Row="0" Grid.Column="1" x:Name="prg" VerticalAlignment="Top" /> 
<TextBlock x:Name="TextBlock" Foreground="Black" Text="{Binding Text}" Grid.Row="0" Grid.Column="2" VerticalAlignment="Top" FontSize="20" HorizontalAlignment="Left" /> 
</Grid> 

и код позади для управления пользователем

public static readonly DependencyProperty TextProperty = 
DependencyProperty.Register(
    "Text", 
    typeof(string), 
    typeof(SuraWithProgressBar), 
    new PropertyMetadata(null)); 

public string Text 
{ 
    get { return (string)GetValue(TextProperty); } 
    set { SetValue(TextProperty, value);} 
} 

Использование

<ListBox x:Name="lsbQuranData" Grid.Row="1" Foreground="Black" ScrollViewer.VerticalScrollBarVisibility="Visible"> 
<ListBox.ItemTemplate> 
<DataTemplate> 
<StackPanel> 
<local:SuraWithProgressBar Text="{Binding SuraTName, ElementName=SuraWithProgressBar}"></local:SuraWithProgressBar> 
<Line X1="0" X2="480" Y1="0" Y2="0" VerticalAlignment="Bottom" StrokeThickness="2" Stroke="Black" /> 
</StackPanel> 
</DataTemplate> 
</ListBox.ItemTemplate> 
</ListBox> 

и код позади для использования

lsbQuranData.ItemsSource = App.Chapter; 

Позвольте мне упомянуть, что «App.Chapter» содержит «SuraTName», привязанную к свойству Text элемента управления пользователя. Пользовательский элемент управления добавляется в список, но текст не отображается.

+0

Когда вы добавляете конвертер, ваше значение не равно нулю? – MatDev8

+0

Извините, я не понял, я не использовал Конвертер. (отображаются 114 элементов, а значение привязки никогда не равно нулю) – ARH

+0

Если вы пишете что-либо вместо своей привязки. Например, «toto»? Что добавляется? – MatDev8

ответ

0

Наконец, я придумал следующее решение.

public static readonly DependencyProperty TextProperty = 
DependencyProperty.Register(
    "Text", 
    typeof(string), 
    typeof(SuraWithProgressBar), 
    new PropertyMetadata(null)); 

Я изменил «Текст» на «SuraTName», и он сработал!

0

конвертер хорошая вещь для отладки связывания выпуска =>

public sealed class DebugConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     return value; 
    } 
} 
+0

Спасибо, В конвертере я вижу значение во время отладки. он возвращает значение, но ничего не отображается в текстовом блоке. – ARH

Смежные вопросы