エッセンシャルWPFのサンプルを追いかけ中。XAMLで書いたチェックボックスの文字列に、別のテキストボックスの入力内容をバインドしてみようとして、以下のような記述をしてみた...。
<TextBox x:Name='SampleText'>テキストボックス(編集可能)</TextBox> <CheckBox Content='{Binding ElementName=SampleText,Path=Text}'>チェックボックス</CheckBox>
で、MSBuildでビルドしてみると
"C:\Temp\WPFTest1\tour.csproj" (既定のターゲット) (1) -> (MarkupCompilePass1 ターゲット) -> C:\Temp\WPFTest1\MyWindow.xaml(24,76): error MC3024: 'System.Windows.Controls.CheckBox.Content' プロパティは既に設定されています。設定できるのは一度だけです。 行 24 位置 76.
なんてエラー。何がまずいかというと、すでに「チェックボックス」という文字が入っていることが「1度目のバインド」にあたるみたい。文字列の設定であっても、内部処理ではリソースへのバインドという扱いになってるのね。
<TextBox x:Name='SampleText'>テキストボックス(編集可能)</TextBox> <CheckBox Content='{Binding ElementName=SampleText,Path=Text}' />
上記のように、初期文字列を無しにしてやれば問題無かった。