Я хочу выборочно связать данные в коллекции с различными элементами пользовательского интерфейса. Например, у меня есть коллекция объектов, где у каждого объекта есть свойство, которое описывает тип этого объекта. В настоящее время я использую DataTemplate для классификации элементов. Но когда я назначаю коллекцию двум разным контейнерам пользовательского интерфейса, несмотря на наличие шаблонов данных, объекты добавляются в оба контейнера. Следующий код сделает вопрос более понятным:
Вид:
Шаблоны данных:
<DataTemplate x:Key="ColumnDataTemplate">
<Label DataContext="{Binding ColumnDiscriptor}" Foreground="White" Background="DarkOrange" BorderThickness="5">
<TextBlock Text="{Binding ColumnName}">
<!--<Run Text="{Binding TableName}"/><Run Text="."/><Run Text="{Binding ColumnName}"/>-->
</TextBlock>
</Label>
</DataTemplate>
<DataTemplate x:Key="ControllerDataTemplate">
<Label Content="{Binding OperatorValue}" Foreground="White" Background="Crimson" BorderThickness="5">
</Label>
</DataTemplate>
<DataTemplate x:Key="ValueDataTemplate">
<TextBox Text="{Binding Path=ComparedValue, Mode= TwoWay}" Height="24" HorizontalAlignment="Left" Width="46" />
</DataTemplate>
<DataTemplate x:Key="JoinDataTemplate">
<Grid>
<!--<Run Text="{Binding TableName}"/><Run Text="."/><Run Text="{Binding ColumnName}"/>-->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="80*"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0" DataContext="{Binding ColumnDiscriptor}" Foreground="Black" Background="Brown" BorderThickness="5">
<TextBlock Text="{Binding ColumnName}">
</TextBlock>
</Label>
<Label Grid.Row="0" Grid.Column="1" DataContext="{Binding JoinWithColumnDescriptor}" Foreground="Black" Background="Beige" BorderThickness="5">
<TextBlock Text="{Binding Path=ColumnName}">
</TextBlock>
</Label>
</Grid>
</DataTemplate>
<local:QueryObjectDataTemplateSelector x:Key="ModelSelector"
ColumnTemplate="{StaticResource ColumnDataTemplate}"
ControllerTemplate="{StaticResource ControllerDataTemplate}"
ValueTemplate="{StaticResource ValueDataTemplate}"
/>
UI Контейнеры:
<ListBox Height="146" HorizontalAlignment="Left" Margin="12,38,0,0" Name="visulaqueryPanel" VerticalAlignment="Top" Width="344" Background="#18EBEBE2" AllowDrop="True" Drop="Item_Drop" DragEnter="Item_DragEnter" ItemsSource="{Binding ViewUIElements}" ItemsPanel="{StaticResource WrapPanelTemplate}"
ItemTemplateSelector="{StaticResource ModelSelector}" SelectedItem="{Binding Path=SelectedDesignerVisualQueryObject}"/>
<ListBox AllowDrop="True" Background="#1CFFFFFF" Margin="10,38,6,39" Name="grid1" Drop="Join_Item_Drop" DragEnter="Item_DragEnter" ItemsSource="{Binding ViewUIElements}" ItemTemplate="{StaticResource JoinDataTemplate}" SelectedItem="{Binding Path=SelectedDesignerVisualQueryObjectJoin}" />
Согласно моей проблеме ViewUIElemetns - это коллекция, состоящая из объектов разных типов.
Заранее спасибо.