Поле со списком WPF очищено

У меня есть DataTemplate, который я использую для отображения части класса в TabControl (это DataTemplate для TabItem). Этот DataTemplate имеет несколько ComboBox, которые отображают различные значения свойств для пользователя.

У меня есть ComboBox, который позволяет пользователю переключаться между объектами, к которым привязан TabControl.

Если у объекта есть свойства, которые не равны null, они выбираются в ComboBoxes, которые к ним привязаны (как и ожидалось).

Если я переключаюсь на объект с нулевым свойством, то в ComboBox не выбран ни один элемент (как и ожидалось).

Однако, если я вернусь к объекту, у которого есть значение в свойстве, он вообще не будет отображаться.

Я не уверен, что делаю не так.

Вот разметка XAML для DataTemplate, с которой у меня возникли проблемы ... Я собираюсь опубликовать только 1 ComboBox, поскольку все они действуют одинаково:

<DataTemplate x:Key="OptionalInfoTemplate">
    <ScrollViewer>
        <StackPanel>
            <StackPanel Orientation="Horizontal" Margin="0,5,0,0">
                <Label Content="Optional Item 1:"></Label>
                <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabControl}}, Path=DataContext.OptionalItems}"
                            SelectedItem="{Binding Path=OptionalItem1}">
                    <ComboBox.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Name}"></TextBlock>
                        </DataTemplate>
                    </ComboBox.ItemTemplate>
                </ComboBox>
            </StackPanel>

            <!-- more controls -->
        </StackPanel>
    </ScrollViewer>
</DataTemplate x:Key="OptionalInfoTemplate">

Спасибо за ваше время и помощь!

-Фринни


person Frinavale    schedule 19.01.2011    source источник
comment
он отображается неправильно. - Что именно вы видите?   -  person Viral Shah    schedule 19.01.2011
comment
Он вообще не отображается   -  person Frinavale    schedule 19.01.2011


Ответы (1)


Я исправил эту проблему случайно. Я изменил привязку для свойства ItemsSource ComboBox с:

"{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabControl}}, Path=DataContext.OptionalItems}"

To:

"{Binding RelativeSource={RelativeSource TemplatedParent},Path=DataContext.OptionalItems}"

-Фринни

person Frinavale    schedule 19.01.2011