TabControl
の内部にUserControl
をロードするXAMLコードがあります。私は、このXAMLコード置く場合XAMLがViewModelオブジェクトからUserControlをロードしない
:
<DataTemplate x:Key="WorkspacesTemplate">
<TabControl
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding Path=Gui}"
ItemTemplate="{StaticResource ClosableTabItemTemplate}"
Margin="4"
/>
</DataTemplate>
を私は(GUIプロパティがViewModelにクラス内で、ユーザーコントロールを返す)のウィンドウに表示されabsolutly何も持っています。
しかし、私が代わりに前の1の彼のXAMLコードを置く場合:
<DataTemplate x:Key="WorkspacesTemplate">
<TabControl
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource ClosableTabItemTemplate}"
Margin="4"
/>
</DataTemplate>
を私はViewModelにオブジェクトロードを持っている:ここでは
alt text http://clip2net.com/clip/m12122/1248018108-clip-3kb.png
はそのTextBoxInputViewModel
のコードの一部でありますVisual(usercontrol)を取得できるようにバインドする必要があるGuiプロパティを持っています。
private UserControl gui;
public UserControl Gui
{
get
{
if (this.gui == null)
{
this.gui = new SimpleTextBoxInputControl();//Xaml User Control
this.gui.DataContext = this;//Bind the Visual and ViewModel
}
return this.gui;
}
}
このオブジェクト参照テキストの代わりにUserControl
を入手するにはどうすればよいですか?
ItemsSource = "{Binding Path = Gui}"の場合、出力ウィンドウを表示しようとしていますか?出力ウィンドウにバインドエラーが表示されたら、メッセージが表示されます –
出力ウィンドウについてご連絡ありがとうございます。 "System.Windows.Data Error:32:ObjectDataProviderにObjectTypeまたはObjectInstanceのいずれかが必要です。"しかし、このバインディングに関連するかどうかは分かりません。 –
バインディングを自分自身に置くと、そのバインディングの原因と関連しているとは思えません。 –