مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

eqbali

عضویت از 1395/04/29

بررسی وجود یک آیتم در لیست باکس که به جدول بایند شده WPF

  • سه شنبه 9 شهریور 1395
  • 13:40
تشکر میکنم

سلام دوستان برنامه نویسان!

من یک لیست باکس دارم که با جدول بایند شده است

می خواهم در این لیست باکس وجود یک رشته رشته را بررسی کنم نمی دانم چگونه این کار را انجام دهم البته می دانم که اگر لیست به جدول بایند نشده باشد میشه با متد Contains رشته را در آیتم های آن جستجو کرد.

کد xaml بایند لیست باکس به جدول این است:

<ListBox Name="lstAbwab" ItemsSource="{Binding Revayat2Bab}" VerticalAlignment="Stretch"  HorizontalAlignment="Stretch" Margin="2">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid Margin="0,2">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="*" />
                                    </Grid.ColumnDefinitions>
                                    <TextBlock Text="{Binding OnvanBab}" TextWrapping="Wrap"/>
                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • چهارشنبه 10 شهریور 1395
  • 10:04

تصویر برنامه :

کد XAML :

<Window x:Class="WpfApplication8.vwListBox"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="vwListBox" Height="300" Width="300" Loaded="Window_Loaded">
    <Grid>
        <TextBox x:Name="txtSearch" HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="176"/>
        <Button x:Name="btnSearch" Content="Search" HorizontalAlignment="Left" Margin="191,10,0,0" VerticalAlignment="Top" Width="91" Height="23" Click="btnSearch_Click"/>
        <ListBox Name="lstAbwab" ItemsSource="{Binding}" VerticalAlignment="Top"  HorizontalAlignment="Stretch" Margin="10,38,10,0" Height="111">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="0,2">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="{Binding OnvanBab}" TextWrapping="Wrap"/>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        <Label x:Name="lblShow" Content="" BorderBrush="Olive" HorizontalAlignment="Left" Margin="10,154,0,0" VerticalAlignment="Top" Height="105" Width="272" BorderThickness="1"/>
    </Grid>
</Window>

کد سی شارپ :

public partial class vwListBox : Window
    {
        public vwListBox()
        {
            InitializeComponent();
        }

        private void btnSearch_Click(object sender, RoutedEventArgs e)
        {
            lblShow.Content = "";
            foreach (var item in lstAbwab.Items)
            {
                var lv = item as Revayat2Bab;
                if (lv.OnvanBab.ToLower().Contains(txtSearch.Text.ToLower()))
                {
                    lblShow.Content += lv.OnvanBab + "\r\n";
                }
            }
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

            List<Revayat2Bab> result = new List<Revayat2Bab>()
            {
                new Revayat2Bab(){OnvanBab = "Revayat aval"},
                new Revayat2Bab(){OnvanBab = "Revayat dovom"},
                new Revayat2Bab(){OnvanBab = "Revayat sevom"},
                new Revayat2Bab(){OnvanBab = "Revayat chaharom"}
            };
            this.DataContext = result;
        }
    }

    class Revayat2Bab
    {
        public string OnvanBab { get; set; } 
    }

 

کاربر سایت

eqbali

عضویت از 1395/04/29

  • چهارشنبه 10 شهریور 1395
  • 23:27

بسیار تشکر باقرزاده بزرگوار از این که جواب سوال ما را دادید

اما عبارت Revayat2Bab در کد xaml بنده یک کلید RelationShip است بین DataTableی که به lstAbwab متصل است و یک DataTable دیگر و عبارت OnvanBab یک فیلد در DataTable است

ولی شما در این نمونه از کلاس استفاده نموده اید.

همانطور که در سوال گفتم با این مثال شما متد Contains برای یافتن رشته کار می کند اما اگر ایتم های لیست باکس توسط DataTemplate  و TextBlock به لیست باکس بایند شود این متد کار نمی کند.

اگر با این فرض یک نمونه برایم بزارید بسیار ممنون می شوم

بهر حال بسیار تشکر از لطفتان

و از سایت برنامه نویسان استفاده می کنم خدا خیرتان دهد.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)