私は複数のビューモデルを持っています。 3つのコンボボックスとその選択されたアイテムにバインドされた3つのリストボックスに対して、3つのデータテンプレートを使用しました。しかし、私の問題は、1つのdatacontextだけが完全に動作することです。私はxamlに複数のdatacontextを適用するには?
public MainWindow()
{
InitializeComponent();
DataContext = new wbItemViewModel();
DataContext = new IfItemViewModel();
}
<Window.Resources>
<DataTemplate x:Key="wbObjectsDataTemplate">
<Grid>
<ItemsControl Grid.ColumnSpan="4" Grid.RowSpan="4" Height="24" Width="642" >
<Grid HorizontalAlignment="Left" VerticalAlignment="Top" Width="697" Margin="10,0,0,0" Height="54" >
<Label Content="{Binding WBName_lbl}" Margin="0,3,0,5" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2"/>
<ComboBox x:Name="wbselect" Margin="5,0,10,1" Grid.Column="1" Grid.ColumnSpan="1" Grid.Row="0">
<ComboBoxItem x:Name="wbstraight" IsSelected="True" Content="straight"></ComboBoxItem>
<ComboBoxItem x:Name="wbtapered" Content="tapered"></ComboBoxItem>
</ComboBox>
<TextBox x:Name="wbDesc" Margin="18,0,20,1" Grid.Column="2" Grid.Row="0">
</TextBox>
<Label x:Name="wblengthvalue" Margin="247,0,54,5" FontSize="8" Grid.Row="1" Grid.Column="2"/>
</Grid>
</ItemsControl>
<!--</GroupBox>-->
</Grid>
</DataTemplate>
<DataTemplate x:Key="ifObjectsDataTemplate">
<Grid>
<ItemsControl Grid.ColumnSpan="4" Grid.RowSpan="4" Height="24" Width="642" >
<Grid HorizontalAlignment="Left" VerticalAlignment="Top" Width="697" Margin="10,0,0,0" Height="54" >
</Grid.RowDefinitions>
<Label Content="{Binding IFName_lbl}" Margin="0,3,0,5" Grid.Row="0" Grid.Column="0" Grid.RowSpan="2"/>
<ComboBox x:Name="ifselect" Margin="5,0,10,1" Grid.Column="1" Grid.ColumnSpan="1" Grid.Row="0">
<ComboBoxItem x:Name="ifstraight" IsSelected="True" Content="straight"></ComboBoxItem>
<ComboBoxItem x:Name="iftapered" Content="tapered"></ComboBoxItem>
</ComboBox>
<TextBox x:Name="ifDesc" Margin="18,0,20,1" Grid.Column="2" Grid.Row="0">
</TextBox>
<Label x:Name="iflengthvalue" Margin="247,0,54,5" FontSize="8" Grid.Row="1" Grid.Column="2"/>
</Grid>
</ItemsControl>
</Grid>
</DataTemplate>
</Window.Resources>
<ComboBox x:Name="wbCombo" ItemsSource="{Binding wbComboBoxList}" SelectedItem="{Binding wbSelectedComboIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Height="20" Width="92" SelectedIndex="4" Canvas.Left="102" Canvas.Top="19"/>
<ComboBox x:Name="ifCombo" ItemsSource="{Binding ifComboBoxList}" SelectedItem="{Binding ifSelectedComboIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Height="20" Width="92" SelectedIndex="4"
Canvas.Left="302" Canvas.Top="19" />
<ListBox x:Name="wbListDataTemplate" ItemsSource="{Binding wbVisibleItems}"
ItemTemplate="{DynamicResource wbObjectsDataTemplate}"
Background="{x:Null}"
SelectedItem="{Binding wbSelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsSynchronizedWithCurrentItem="True" Canvas.Top="51" Height="153" Width="655">
</ListBox>
<ListBox x:Name="ifListDataTemplate" ItemsSource="{Binding ifVisibleItems}"
ItemTemplate="{DynamicResource ifObjectsDataTemplate}"
Background="{x:Null}"
SelectedItem="{Binding ifSelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsSynchronizedWithCurrentItem="True" Canvas.Top="203" Height="153" Width="655">
</ListBox>
</Window>
のようなコードを書いた場合、すなわち、 のみ最後のDataContextが表示されます。または、1つのDataContextを1つだけ書き込むと、それが私の画面に表示されます。私はstackoverflowで別のソリューションを試みたが、使用していない。 plsヘルプ。
なぜdownvote?! –
申し訳ありません。それはうまくいかなかった。 –
何が問題なのかを –