Я новичок в WPF.Я пытаюсь изменить проект VisualStudioLikePanes из книги WPF 4 Unleashed.Поскольку панели по умолчанию скрыты до запуска проекта, я решил, что было бы неплохо поместить панель, над которой я работаю, в отдельный файл xaml, чтобы я мог видеть изменения, вносимые в панель, без необходимости запускаисполняемый файл.
Итак, основываясь на некоторых постах, которые я прочитал здесь на StackOverflow несколько дней назад, я добавил новый UserControl в пример проекта и добавил в него содержимое соответствующей панели.Вот как выглядят атрибуты UserControl в «дочернем» XAML-файле:
<UserControl x:Class="Sample.SettingsPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
Чтобы включить этот элемент управления в родительский, я добавил пространство имен xmlns: sp в «родительский» XAML-файл:
<Window
Title="MainWindow"
x:Uid="Window_1" x:Class="Sample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sp="clr-namespace:Sample"
x:Name="window">
Затем я «включил» элемент управления с помощью этого:
<sp:SettingsPanel Visibility="Collapsed" x:Name="layer1" x:FieldModifier="private" />
Я сразу обнаружил, что в файле с выделенным кодом для «родительского» файла XAML весь код, который сделалссылка на любой из элементов, теперь содержащихся в «дочернем» XAML-файле, теперь не распознана.Затем я удалил (или закомментировал) все ссылки на имена и объекты, которые теперь содержались в «дочернем» файле XAML и с тех пор прыгают через обручи, чтобы связать вещи обратно.
Например,Я хочу, чтобы один TextBox в «дочернем» XAML-файле отражал то, что находится в TextBox в «родительском» XAML-файле.Я считаю, что следующая привязка будет работать, но, конечно, я не могу поместить это в «дочерний» XAML, потому что он больше не «знает» об элементе «test» родителя.
<TextBox Text="{Binding ElementName=test, Path=Text}" />
Я уверен, что неправильно разбил родительский XAML-файл.Я не могу себе представить, что каждый раз, когда кто-то хочет разбить какой-то сегмент XAML на другой файл, он должен переделывать весь свой код и настраивать специальные средства связи, чтобы элементы продолжали общаться.
Я смотрел наразличные сообщения (например, Привязка двух пользовательских элементов управления к одному и тому же DataContext или ViewModel? и Какой самый простой способ разбить большие файлы XAML в моем приложении? ), но они этого не сделалине отвечайте на мой конкретный вопрос.
Спасибо,
Мэтт