非常に単純なユーザーコントロールがあり、XAMLでインスタンス化しようとしています。私は名前空間で少し過激になると、x:Nameの問題にぶつかります。ここでUserControlで指定された名前空間がWPFビルドに失敗する
は私のUserControlである:ここでは
<UserControl x:Class="UserControlTest.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="300" Height="300">
<Grid>
<Label Name="Label1">Label</Label>
</Grid>
</UserControl>
は、コードビハインドユーザーコントロールのためです:今
Namespace UserControlTest
Partial Public Class UserControl1
End Class
End Namespace
、私はに設定私のVB.Netプロジェクトのルート名前空間を持っていることに注意してください"UserControlTest"ここ は私のメインウィンドウです:
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:control="clr-namespace:UserControlTest.UserControlTest"
Title="Window1" Height="300" Width="300">
<Grid>
<control:UserControl1 />
</Grid>
</Window>
は、コントロールの別名は「UserControlTest.UserControlTest」を持っている必要がありますどのように参照してください?私のメインウィンドウを見ている、ということを知っこれは私のプロジェクトのルート名前空間をUserControlTestに設定しているためです。また、UserControlの名前空間もUserControlTestに定義しています。私がUserControlの名前空間を使用しない場合、私は何の問題もありません。しかし
、ビルドが失敗し、私はこれを行っているので、私はXを適用しようとする必要があり、次のように、ユーザーコントロールに名前:
このエラーで、ビルドに失敗します<control:UserControl1 x:Name="test"/>
を:
Type 'UserControlTest.UserControlTest.UserControl1' is not defined.
誰でも説明できますか?私はx:Nameの値を与えることができるように、私のUserControlを名前空間に入れないようにする必要はありますか?私はコードビハインドから自分のUserControlsを操作したいと思います。x:Nameがなければ、私はクリークの上にいます。しかし、私はそれを得るために名前空間の使用を犠牲にしたくありません!
ありがとうございました。
私のユーザーコントロールは、コードビハインドで定義されている名前空間がありません。 Foo.Controlsの名前は本当ですか?コントロールフォルダとその中に新しいUserControlを追加しました。コードビハインドに定義されている名前空間はありません。私のメインウィンドウXAMLはxmlns:control = "clr-namespace:UserControlTest"(すなわちclr-namespace:UserControlTest.Controlではない)を持ち、コントロール:プレフィックスを使ってXAMLで新しいUserControlを作成することができます。 – TimH
私の編集をご覧ください。うまくいけばそれは理にかなっています。 – David