0

これが私が解決する必要がある私の問題です。

私のデータコンテンツは DemoList クラスにあります:

注意: DemoHeader オブジェクトには DemoItem オブジェクトの ObservableCollection が含まれ、DemoList オブジェクトには DemoHeader オブジェクトの ObservableCollection が含まれます

public enum Type { article, product, material }

public class DemoHeader
{
    private ObservableCollection<DemoItem> _items;

    public ObservableCollection<DemoItem> Items
    {
        get { return _items; }
        set { _items = value; }
    }

    public DemoHeader(string document)
    {
        this._salesOrder = document;
        _items = new ObservableCollection<DemoItem>();
    }

    private string _salesOrder;

    public string SalesOrder
    {
        get { return _salesOrder; }
        set { _salesOrder = value; }
    }
}

public class DemoItem
{
    public DemoItem(string name, Type type)
    {
        this._name = name;
        this._type = type;
    }

    private Type _type;

    public Type Type
    {
        get { return _type; }
        set { _type = value; }
    }

    private string _name;

    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }
}


public class DemoList : ObservableCollection<DemoHeader>//, ICollectionView
{
    public DemoList() 
    {
        DemoHeader dd = new DemoHeader("Doc-1");
        dd.Items.Add(new DemoItem("T-1", Type.article));
        dd.Items.Add(new DemoItem("M-1", Type.material));

        DemoHeader dd2 = new DemoHeader("Doc-2");
        dd2.Items.Add(new DemoItem("P-1", Type.product));
        dd2.Items.Add(new DemoItem("P-2", Type.product));

        this.Add(dd);
        this.Add(dd2);

    }
}

XAML:

注意: ListBox ごとに 4 つの CollectionViewSource があります。

<Window x:Class="WuZet.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:c="clr-namespace:WuZet"
        Title="WuZet" WindowStartupLocation="CenterScreen" ResizeMode="CanResize" Loaded="window_loaded" Background="#ECE9D8" WindowStyle="ToolWindow" Icon="/WuZet;component/Images/ksi_ikona.ico" Topmost="True" WindowState="Maximized" SizeToContent="WidthAndHeight"> 
    <Window.Resources>
        <CollectionViewSource x:Key="list" Source="{Binding}"></CollectionViewSource>
        <CollectionViewSource x:Key="wares" Source="{Binding Source={StaticResource list}, Path=Items}" Filter="wareFilter"></CollectionViewSource>
        <CollectionViewSource x:Key="materials" Source="{Binding Source={StaticResource list}, Path=Items}" Filter="materialFilter"></CollectionViewSource>
        <CollectionViewSource x:Key="products" Source="{Binding Source={StaticResource list}, Path=Items}" Filter="productFilter"></CollectionViewSource>
    </Window.Resources>    
    <Grid>
        <Grid.RowDefinitions> 
            <RowDefinition Height="80"></RowDefinition>
            <RowDefinition Height="20"></RowDefinition>
            <RowDefinition Height="200"></RowDefinition>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="200"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"></ColumnDefinition>
            <ColumnDefinition Width="*"></ColumnDefinition>
            <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <StackPanel Grid.Row="0" Grid.ColumnSpan="2" Margin="5,5,5,5">
            <TextBox/>
            <Button Content="ok" Margin="0,5,0,0" HorizontalAlignment="Stretch" Height="30"  Width="150" Click="Button_Click"/>
        </StackPanel>

        <StackPanel Grid.RowSpan="2" Grid.Column="2">
            <ListBox Name="orders" IsEnabled="{Binding ElementName=check, Path=IsChecked}" Margin="85,5,85,5" Height="70" ItemsSource="{Binding Source={StaticResource list}}" DisplayMemberPath="SalesOrder"/>
            <CheckBox Name="check" HorizontalAlignment="Center" Content="Wybierz zamówienie" IsChecked="False"/>
        </StackPanel>

        <GroupBox Header="Wares" Grid.Row="2" Grid.Column="0">
            <ListBox Name="lbWares" ItemsSource="{Binding Source={StaticResource wares}}" >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <!--<StackPanel Orientation="Horizontal">-->
                        <TextBlock Text="{Binding Path=Name}"></TextBlock>
                            <!--<TextBlock Text="{Binding ZaE_TwrKod}" />
                            <TextBlock Text=", " />
                            <TextBlock Text="{Binding ZaE_Ilosc}" />
                            <TextBlock Text=", " />
                            <TextBlock Text="{Binding ZaE_TwrNazwa}" />-->
                        <!--</StackPanel>-->
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </GroupBox>

        <GroupBox Header="Materials" Grid.Row="2" Grid.Column="1">
            <ListBox Name="lbMaterials" ItemsSource="{Binding Source={StaticResource materials}}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <!--<StackPanel Orientation="Horizontal">-->
                            <TextBlock Text="{Binding Path=Name}"/>
                            <!--<TextBlock Text=", " />
                            <TextBlock Text="{Binding ZaE_Ilosc}" />
                            <TextBlock Text=", " />
                            <TextBlock Text="{Binding ZaE_TwrNazwa}" />-->
                        <!--</StackPanel>-->
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </GroupBox>

        <GroupBox Header="Products" Grid.Row="2" Grid.Column="2">
            <ListBox Name="lbProducts" ItemsSource="{Binding Source={StaticResource products}}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <!--<StackPanel Orientation="Horizontal">-->
                            <TextBlock Text="{Binding Path=Name}"/>
                            <!--<TextBlock Text=", " />
                            <TextBlock Text="{Binding ZaE_Ilosc}" />
                            <TextBlock Text=", " />
                            <TextBlock Text="{Binding ZaE_TwrNazwa}" />
                        </StackPanel>-->
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </GroupBox>
</Window>

DemoList オブジェクトは CollectionViewList x:Key=listにバインドされています。

これが私が実装する必要がある私のビジネスロジックです:

  • チェックボックスがマークされている場合、選択した ListBoxItem を対応するコンテナ [製品、製品、材料] に戻す必要があります - このロジックは機能しています
  • チェックボックスがマークされていない場合
    、すべてのヘッダーのすべてのアイテム [ObservableCollection] を対応するコンテナー [商品、製品、材料]に返す必要があります。

私はここで立ち往生しています、誰かが私に解決策を提案できますか?

--- 2013-11-04 20:38

誤解と私の下手な英語をおねがいします。

より明確にするためにいくつかの画面をアップロードしました。

http://imgur.com/UowQrRP

画面に表示されているように、チェックボックスの動作を実装する必要があります。オフの場合、各 DemoItem オブジェクトは 3 つのコンテナのいずれかに表示する必要があります。各コンテナーは CollectionViewSource にバインドされます。

4

0 に答える 0