Как связать данные и заполнить / отобразить в DataGrid или UniformGrid из выбранных элементов ListBox (SelectionMode = Multiple) - PullRequest
0 голосов
/ 03 декабря 2011

Что касается моего вопроса (Заголовок), Я уже могу связать выбранные элементы из моего списка в моей униформе Grid. НО , даже если я уже выбрал много элементов, UniformGrid показывает только 1 элемент.

Не могли бы вы сказать мне, как это сделать?

или Можно ли заполнить UniformGrid выбранными элементами ListBox?

или Какие есть другие варианты для переноса (связывания) и отображения выбранных мной предметов из моего ListBox?

или Я просто пойду и пройдусь по коду, если у вас есть похожие примеры.

Если быть точным, мои элементы ListBox images НО не обязательно должны быть только изображения. Я просто хочу узнать, как привязать выбранные элементы к сетке или ко всему, что будет отображать выбранные элементы моего ListBox.

Спасибо

XAML:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
x:Class="SampleBinding.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Window.Resources>
    <DataTemplate x:Key="ItemTemplate">
        <StackPanel>
            <Image Source="{Binding myImages}" HorizontalAlignment="Left" Height="64" Width="64"/>
        </StackPanel>
    </DataTemplate>
</Window.Resources>

<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}">
    <ListBox x:Name="listBox" HorizontalAlignment="Left" ItemTemplate="{DynamicResource ItemTemplate}" ItemsSource="{Binding Collection}" Margin="19,40,0,102" Width="200" SelectionMode="Multiple"/>
    <UniformGrid x:Name="uGrid" DataContext="{Binding SelectedItem, ElementName=listBox}" Margin="273,40,78,132" d:DataContext="{Binding Collection[0]}" Grid.Row="2" Grid.Column="2">
        <Image x:Name="imageItem" Source="{Binding myImages}" HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Height="100"/>
    </UniformGrid>
</Grid>

1 Ответ

0 голосов
/ 03 декабря 2011

Я вижу, что вы связываете сетки DataContext с ListBox SelectedItem, который всегда один. Вот почему вы видите только один элемент в сетке. (Я думаю, это всегда последний выбранный). Чтобы решить эту проблему более точно MVVM, я бы лично добавил новую наблюдаемую коллекцию ListBoxSelecetedItems, связал ее с DataGrid и при каждом выборе ListBox добавил новый выбранный элемент в эту коллекцию. Если вы отмените выбор элемента из списка, удалите его из коллекции.

Надеюсь, это поможет.

...