Я не могу точно понять, почему на ваш кадр нельзя ссылаться. Вы пробовали другое имя? Я хотел бы, чтобы вы предложили другой более разумный способ сделать это. Вы можете использовать Binding для источника. Вот небольшой пример:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="24"/>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ComboBox x:Name="SourceBox" Grid.Row="0"
VerticalAlignment="Top"
DisplayMemberPath="Label"
TextBlock.Foreground="Black"></ComboBox>
<Frame NavigationUIVisibility="Hidden"
JournalOwnership="OwnsJournal" Grid.Row="1"
Source="{Binding ElementName=SourceBox, Path=SelectedItem.Source}"/>
</Grid>
Обратите внимание на привязку источника к кадру. Также на кадре больше нет x: Name.
В приведенном ниже коде вы должны создать корректный ItemSource для выпадающего списка. Поэтому я построил простой объект, который содержит ярлык и источник.
public class SourceHolder
{
public string Label { get; set; }
public Uri Source { get; set; }
}
В конструкторе вашего окна вы можете назначить источник элементов вашему списку:
public Window1()
{
List<SourceHolder> sources = new List<SourceHolder>();
sources.Add(new SourceHolder()
{
Label = "Page1",
Source = new Uri("Page1.xaml", UriKind.Relative)
}
);
sources.Add(new SourceHolder()
{
Label = "Page2",
Source = new Uri("Page2.xaml", UriKind.Relative)
}
);
InitializeComponent();
this.SourceBox.ItemsSource = sources;
}
В результате в выпадающем списке есть два элемента (Страница1, Страница2). Если вы изменяете элемент, фрейм обновляет его содержимое с указанным источником выбранного элемента комбинированного списка.
Jan