Как вы привязываетесь к ComboBox в шаблоне данных? - PullRequest
2 голосов
/ 14 мая 2010

У меня есть список, связанный с наблюдаемой коллекцией аудио (пользовательский класс). Класс Audio имеет два свойства: DisplayText (string) и свойство с именем TarpIds (Observable Collection of Integer). Мне нужно разрешить пользователю изменять TarpID в поле со списком для каждого отображаемого элемента списка и ловить изменение выбора.

Я создал DataTemplate, который стилизует свойство DisplayText из объекта Audio и добавляет ComboBox для отображения доступных TarpID для этого аудио (они являются динамическими и уникальными для каждого аудио). DisplayText прекрасно работает, но я не могу получить TarpID для отображения в ComboBox.

Вот что у меня есть, и спасибо за любую помощь. К вашему сведению, я установил ItemSource во время выполнения, который связывает ListUploadAudio с наблюдаемой коллекцией аудио.

<Border BorderBrush="Red" Background="WhiteSmoke" CornerRadius="8">
                <Border.Resources>
                    <DataTemplate x:Key="UploadLayout" DataType="Audio">
                        <StackPanel Orientation="Vertical">
                            <TextBlock Text="{Binding Path=DisplayText}" 
                        FontWeight="Bold" Foreground="Blue">
                            </TextBlock>                                
                                <ComboBox x:Name="ListBoxTarpIDs"
                                         ItemsSource="{Binding Path=TarpIds}">                                        
                                </ComboBox>                                                                              
                           </StackPanel>
                    </DataTemplate>

                </Border.Resources>
                    <ListBox x:Name="ListUploadAudio" BorderBrush="Transparent" 
                         Background="Transparent" Width="230" Margin="10" 
                         Height="200" IsSynchronizedWithCurrentItem="True" SelectionMode="Multiple"
                         ItemTemplate="{DynamicResource UploadLayout}">
                </ListBox>
            </Border>

1 Ответ

2 голосов
/ 15 мая 2010

Ваш ComboBox должен связать SelectedValue, а также ItemsSource.

Поскольку ваш ComboBox не связывает свои элементы, ваш код выглядит правильно. Я бы заподозрил одно из следующего:

  • Неправильное написание (например, TarpIds против TarpID)
  • Неправильно заданная настройка (например, отсутствует геттер)
  • ListUploadAudio.ItemsSource не установлен в ожидаемое значение

Если это не сработает, я предлагаю вам опубликовать свой код, в частности определение вашего свойства TarpIds и место, где вы устанавливаете ListUploadAudio.ItemsSource

В качестве дополнительного примечания: вам не нужно указывать путь = в ваших привязках, если вы не используете пространства имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...