私はWPFが初めてです。私はWPF 4 Unleashedの本からVisualStudioLikePanesプロジェクトを修正しようとしています。私がプロジェクトを実行するまで、ペインはデフォルトで隠されているので、作業中のペインを個別のxamlファイルに配置して、起動する必要なしにペインに加えた変更を見ることができます実行可能ファイル 大きなXAMLファイルをサブXAMLファイルに分割し、親オブジェクトと子オブジェクト間の通信を維持するにはどうすればよいですか?
だから、私は数日前にStackOverflowの上ここで読むいくつかの記事に基づいて、私は、サンプルプロジェクトに新しいユーザーコントロールを追加し、その中に問題のペインの内容をplopped。ここでは、ユーザーコントロールの属性は「子」XAMLファイルにどのように見えるかです:「親」XAMLファイルにSP名前空間:<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を追加
<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">
私は、この介して制御「含ま」:私はすぐに、コードビハインドファイル「親」XAMLファイルの中にいることをelemenのいずれかに言及したすべてのコードを見つけ
<sp:SettingsPanel Visibility="Collapsed" x:Name="layer1" x:FieldModifier="private" />
を'子'のXAMLファイルに今含まれていたtsが認識されなくなりました。だから、私は '子'のXAMLファイルに含まれていた名前とオブジェクトへのすべての参照を削除(またはコメントアウト)しています。例えば
、私は「子」XAMLファイル内の1つのテキストボックスは、「親」XAMLファイル内のテキストボックスにあるものを反映します。私は次のバインディングがうまくいくと信じていますが、これは親の 'test'要素についてもう「分かっていない」ため、これを「子XAML」に入れることはできません。
<TextBox Text="{Binding ElementName=test, Path=Text}" />
私は、親のXAMLファイルを間違って分割してしまったと確信しています。誰かがXAMLの一部を別のファイルに分割しようとするたびに、すべてのコードを修正し、要素が通信を続けるように特別な通信ハックを設定する必要があるとは想像もできません。
さまざまな投稿(例:Binding two UserControls to the same DataContext, or ViewModel?とWhat is the easiest way to break up large XAML files in my application?)を調べましたが、私の質問には答えませんでした。
おかげで、あなたはまだxでそれらにアクセスすることができ、ユーザーコントロールにあなたの要素を分割
マット
XML(XAMLはXMLの一種です)が行うこと(例:参照)を行いたい場合は、それをそのままにしておく必要があります。それは結合されていない作品を打破することですが、親の子供はかなりタイトなカップリングです。 – Paparazzi