Как отфильтровать / найти строку, связанную с элементами из коллекции, и поместить эту совпадающую строку в текстовый блок в Silverlight? - PullRequest
0 голосов
/ 03 марта 2011

Мне интересно, может ли кто-нибудь поделиться информацией или хорошим примером с фильтрацией списков элементов на основе того, что напечатано в текстовом поле. Возможно, это может быть другой элемент управления, который лучше соответствует сценарию ниже.

В моем сценарии мне нужно набрать короткую строку в текстовом блоке. Затем нажмите кнопку «Проверить», чтобы найти самые близкие строковые значения элементов из коллекции и показать эти совпадения в виде списка под текстовым блоком. Выбор любого элемента из показанного списка элементов поместит выбранную строку / элемент в блок тетексблока. Поведение очень похоже на поле со списком.

Наконец, мне нужно иметь возможность добавить выбранную строку / элемент, который был помещен в текстовый блок, в другой список, нажав кнопку «Добавить». Любые идеи высоко ценятся. Заранее спасибо!

Ниже мой XAML код:

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
x:Class="FilterListItems.MainPage"
xmlns:local="clr-namespace:FilterListItems"
Width="640" Height="480">

<UserControl.Resources>   
    <local:Products x:Key="productCollection" />
    <CollectionViewSource x:Key="collProducts" Source="{Binding Source={StaticResource productCollection}, Path=DataCollection}">
</CollectionViewSource>
</UserControl.Resources> 
<Grid x:Name="LayoutRoot" Background="White">
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="Auto" />
      <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="10" Grid.Row="0">
  <TextBlock Text="Enter Partial Name: " />
  <TextBox Width="100" Name="txtName" />
  <Button Name="btnSearch" Content="Check" Click="btn_Check" />
  <Button Name="btnAdd" Content="Add" Click="btn_Add" Margin="9,0,0,0" />
</StackPanel>
<ListBox Margin="10" Grid.Row="1" Name="lstData" DisplayMemberPath="ProductName"  ItemsSource="{Binding Source={StaticResource collProducts}}" Visibility="Collapsed" />
<ListBox Margin="10" Grid.Row="2" Name="2stData" />

C # для генерации коллекции:

public partial class MainPage : UserControl
{
    public MainPage()
    {
        // Required to initialize variables
        InitializeComponent();
    }

    private void btnSearch_Click(object sender, RoutedEventArgs e)
    {
        //FilterData();
    }
}


public class Product
{
    public Product(int id, string name)
    {
      ProductId = id;
      ProductName = name;
    }

    public int ProductId { get; set; }
    public string ProductName { get; set; }
    }

public class Products : List<Product>
{


    public Products()
    {
        InitCollection();
    }

    public List<Product> DataCollection { get; set; }

    List<Product> InitCollection()
    {
        DataCollection = new List<Product>();

        DataCollection.Add(new Product(1, "aaa"));
        DataCollection.Add(new Product(2, "bbb"));
        DataCollection.Add(new Product(3, "ccc"));
        DataCollection.Add(new Product(4, "ddd"));
        DataCollection.Add(new Product(5, "eee"));
        DataCollection.Add(new Product(6, "fff"));
        DataCollection.Add(new Product(7, "hhh"));
        DataCollection.Add(new Product(8, "ggg"));

        return DataCollection;
    }
}

Ответы [ 2 ]

1 голос
/ 03 марта 2011

Bea Stollnitz - отличный ресурс для изучения способов фильтрации коллекций. Вы должны начать с ее поста " Как отфильтровать элементы из коллекции? ", чтобы получить простую и ясную картину. Когда вы закончите с этой статьей, просто воспользуйтесь поиском в ее блоге для поиска «фильтрации» коллекций с использованием collectionviewsource.

1 голос
/ 03 марта 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...