نمایش نتایج 1 تا 20 از 20

نام تاپیک: مشکل در بایند کردن دیتا گرید

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اهواز
    پست
    301

    مشکل در بایند کردن دیتا گرید

    سلام دوستان من درMVVM تازه کار هستم ،لطفا در حل مشکل من را راهنمایی کنید،
    فرض کنید که یک دیتا گرید داریم که اطلاعات پرسنل را نمایش میدهد و هر رکورد حاوی یک جزیتای بیشتر میباشد میخواهم وقتی روی رکورد کلیک کنم
    جزییات بیشتری از اون رکورد را برا اساس ایدی هر رکورد خوانده میشو توی لیست ویو نمایش داده بشه،ممنون میشم دقیق من رو راهنمایی کنید

  2. #2

    نقل قول: مشکل در بایند کردن دیتا گرید

    سلام
    این که کلیات هست .

    سئوال تون چیه؟
    نمونه کدی که مشکل دارید را هم بذارید؟

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اهواز
    پست
    301

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک
    سلام
    این که کلیات هست .

    سئوال تون چیه؟
    نمونه کدی که مشکل دارید را هم بذارید؟

    تشکر از توجه شما
    view:


    <Window x:Class="WpfMasksTest.Echreshavi.View.PersonInfoTe  st"
    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"
    xmlns:local="clr-namespace:WpfMasksTest.Echreshavi.View"
    xmlns:swc="http://schemas.staware.com/winfx/2008/xaml/controls"
    xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:local1="clr-namespace:StaWare.Wpf.MasksBN.ViewModels.Person;as sembly=StaWare.Wpf.MasksBN"
    mc:Ignorable="d"
    Title="PersonInfoTest" Height="500" Width="1000">

    <Grid>
    <Grid.RowDefinitions>
    <RowDefinition Height="65"/>
    <RowDefinition/>
    <RowDefinition/>

    </Grid.RowDefinitions>

    <StackPanel Grid.Row="0" >
    <TextBox Width="250" Height="25" Margin="5" Text="{Binding Path=V_SEARCH , Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Background="#FFF3ECEC" Foreground="#FF080A07"/>
    <Button Width="140" Margin="4" Content="Search Person" Command="{Binding SearchPersonCommand}">
    <Button.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
    <GradientStop Color="Black" Offset="0"/>
    <GradientStop Color="White" Offset="1"/>
    </LinearGradientBrush>
    </Button.Background>
    </Button>

    </StackPanel>

    <StackPanel Grid.Row="1" >
    <DataGrid AutoGenerateColumns="True"

    Height="200"
    Margin="4"
    RowHeaderWidth="30"
    ColumnHeaderHeight="45"
    ItemsSource="{Binding ListPersons}"



    SelectedItem="{Binding SelectedItem, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"


    CanUserReorderColumns="False"
    AlternatingRowBackground="#E6FCFCB8"
    CanUserAddRows="False"
    CanUserDeleteRows="False"
    CanUserResizeRows="False"
    SelectionMode="Single"
    IsReadOnly="True" IsSynchronizedWithCurrentItem="False" BorderBrush="#FF082A4B">


    <DataGrid.Resources>
    <local1:BindingProxy x:Key="proxy" Data="{Binding}" />
    </DataGrid.Resources>
    <DataGrid.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
    <GradientStop Color="Black" Offset="0"/>
    <GradientStop Color="#FF93EAEA" Offset="1"/>
    </LinearGradientBrush>
    </DataGrid.Background>
    <DataGrid.Columns>
    <DataGridTextColumn Header="{Binding Data.HeaderText, Source={StaticResource proxy}}"/>
    </DataGrid.Columns>

    </DataGrid>

    </StackPanel>

    <StackPanel Grid.Row="2" >
    <dxe:ListBoxEdit ItemsSource="{Binding DetailPesrson, ElementName=grid}"
    DisplayMember="id"/>

    </StackPanel>


    </Grid>


    </Window>



    view model


    namespace StaWare.Wpf.MasksBN.ViewModels.Person
    {


    public class InfoPersonVM: INotifyPropertyChanged
    {

    private static readonly ILog _log = SwLogManager.GetLogger(typeof(InfoPersonVM));
    public InfoPersonVM()
    {
    SearchPersonCommand = new RelayCommand(ExecuteMyMethod, CanExecuteMyMethod);
    DetailPersonCommand = new RelayCommand(ExecuteDetailMethod, CanExecuteDetailMethod);



    SwUserInfo.Login("mh", "de");
    _log.Warn(" HEI HIER ");

    }
    private string _seachperson;
    private long _personid;



    public ICommand SearchPersonCommand { get; set; }
    public ICommand DetailPersonCommand { get; set; }

    public event PropertyChangedEventHandler PropertyChanged;



    private IList<PersRec> _listPersons = new List<PersRec>();

    public IList<PersRec> ListPersons
    {
    get { return _listPersons; }
    set { SetValue(ref _listPersons, value); }
    }


    private IList<ModGridColObj> header = new List<ModGridColObj>();

    public IList<ModGridColObj> HeaderText
    {
    get { return header; }
    set { SetValue(ref header, value); }
    }



    private IList<DetailRec> _detailperson = new List<DetailRec>();

    public IList<DetailRec> DetailPesrson
    {
    get { return _detailperson; }
    set { SetValue(ref _detailperson, value); }
    }


    private DataRowView selectedItems;
    public DataRowView SelectedItems
    {
    get { return selectedItems; }
    set
    {
    selectedItems = value;
    NotifyPropertyChanged("SelectedItems"); //INotifyPropertyChange
    //OnSelect_RequestChange();//do stuff
    }
    }




    private DataRowView _SelectedPerson;

    public DataRowView SelectedPerson
    {
    get { return _SelectedPerson; }
    set { SetValue(ref this._SelectedPerson, value); }
    }



    private object selectedItem;
    public object SelectedItem
    {
    get
    {
    return selectedItem;
    }
    set
    {
    selectedItem = value;
    // RaisePropertyChanged("SelectedItem");
    }
    }




    private void SetValue<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
    {
    if (Equals(field, value)) return;

    field = value;
    NotifyPropertyChanged(propertyName);
    }

    private void NotifyPropertyChanged(string propertyName)
    {
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }



    public string V_SEARCH
    {
    get { return _seachperson; }
    set { _seachperson = value; }
    }


    public ObservableCollection<object> Generateheader { get; } = new ObservableCollection<object>();





    private bool CanExecuteDetailMethod(object parameter)
    {
    return true;
    }


    private void ExecuteDetailMethod(object parameter)
    {
    try
    {
    if (true)
    {

    GetDetailPerson();

    }
    else
    {
    // log.Error;
    }
    }
    catch (Exception e)
    {
    // log.Error;


    string x = e.ToString();
    }

    }






    public void GetheaderText()
    {
    var objheader = new GridGetObj209Dto("V_OWNER", "V_PROCEDURE", "V_CURSOR")
    {

    Owner = "SW",
    Procedure = "PERS_CUR_DUMMY_180",
    Cursor = "cur_person",

    };
    new GridDao().GridGetObj209(ref objheader);

    var obj = objheader.Grid;

    if (obj.ColsList[0].Show == true && obj.ColsList[0].Visible == true)
    {

    HeaderText = obj.ColsList;

    }

    }

    //PersData180(PersData180Dto persData180Dto, Guid? exclusiveConnectionId = null)

    // string procedureFullName = "SW.PERS_DATA_180";
    //DetailRec

    public void GetDetailPerson()
    {




    //IList<DetailRec> objDetail = new PersData180Dto("N_PERSON_ID")
    //{

    // pk = serchitem,
    //};

    //new PersDao().PersData180(ref objDetail);

    //_log.Info($"error:{objDetail.Errno} AdrgruppeId:{objDetail.}");
    //DetailPesrson = objDetail;


    // return DetailPesrson;


    }





    public IList<PersRec> GetPersonInfo(string serchitem )
    {
    var objDto = new PersCurSfld180Dto()
    {

    Search = serchitem,
    };

    new PersDao().PersCurSfld180(ref objDto);

    _log.Info($"error:{objDto.Errno} AdrgruppeId:{objDto.AdrgruppeId}");
    ListPersons = objDto.CurPersonList;

    GetheaderText();
    return ListPersons;


    }





    }


    }




    من میخوام وقتی روی رکورد در دیتا گرید کلبک کنم جزیات اون رکورد در لیست نمایش بده.درواقع با کلیک روی رکورد در دیتا گرید بایستی تابعی فراخوتی بشه که بیاد براساس ایدی دریافت شده از رکورد اطلاعات مورد نیاز رو واکشی کنه و توی لیست ویو بریزه،اولین مشکل اینه که م
    وقتی روی رکوردی در دیتا گرید کلیک میکنم وارد کد بلاک کامندی بشم که اطلاعات رو فراخونی کنه و بریزه توی کالکشنی که لیست ویو بش بایند هست ،یعنی رکورد گرید بایند بشه به کامند و وارد کد بلاک بشه

  4. #4

    نقل قول: مشکل در بایند کردن دیتا گرید

    سلام میتونید از این روش استفاده کنید
    اول پکیج ناگت interactivity مایکروسافت رو نصب کنید
    بعد ایونتSelectionChanged رو بصورت تریگر بنویسید
    <DataGrid>
    <hc:Interaction.Triggers>
    <hc:EventTrigger EventName="SelectionChanged">
    <hc:EventToCommand Command="{Binding SwitchItemCmd}" PassEventArgsToCommand="True"/>
    </hc:EventTrigger>
    </hc:Interaction.Triggers>
    </DataGrid>

    حالا شما باید یه Command به اسم SwitchItemCmd ایجاد کنید که از نوع ایونت آرگ SelectionChanged باشه
    public DelegateCommand<SelectionChangedEventArgs> SwitchItemCmd { get; private set; }

    SwitchItemCmd = new DelegateCommand<SelectionChangedEventArgs>(Switch) ;


    حالا متد Switchرو ایجاد میکنیم که هر وقت ایتمی عوض شد رکورد فعلی رو دریافت میکنیم
    private void Switch(SelectionChangedEventArgs e)
    {
    if (e.AddedItems.Count == 0)
    {
    return;
    }


    if (e.AddedItems[0] is PersRec item)
    {
    var currentItem = item.Name;
    }
    }

    حالا currentItem شامل رکورد فعلی هستش و شما میتونید اطلاعات موردنیاز رو ازش دریافت کنید

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اهواز
    پست
    301

    نقل قول: مشکل در بایند کردن دیتا گرید

    ممنون میشم راهنمایی بقرمایید.

  6. #6

    نقل قول: مشکل در بایند کردن دیتا گرید

    پست قبل منو مطالعه کنید

  7. #7
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اهواز
    پست
    301

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط barnamenevisjavan مشاهده تاپیک
    پست قبل منو مطالعه کنید
    خیلی ممنون از پاسختون،فط یه سوال من زمانی که میخوام متد selection chageفراخونی بشه همزمان با اون یک پارامتر هم پاس کنه،چجوری باید اون رو پاس بدم،باز ممنون از پاسخگوییتون

  8. #8

    نقل قول: مشکل در بایند کردن دیتا گرید

    سلامی مجدد
    دوست مون اشاره کردن .
    اما دقت کنید که اگه به خاصیت های مخصوص command (مثل فعال یا غیر فعال سازی کنترل و ...) یا command های از پیش تعریف شده نیاز ندارید ، و صرفا میخواید در حد یک هندلر برای اتصال به رویداد از command استفاده کنید ، میتونید بجای command ، مستقیما از خودِ رویداد استفاده کنید .

    -------------------------

    در ViewModel تون ، کدهایی دیده میشه که نمیدونم برای چیه . فرضا نمیدونم متد GetPersonInfo و اشیاء هایی که توش ساخته میشن ، چی هستن .
    اما دقت کنید که ViewModel فقط برای ارتباط دادن و انتقال داده از لایه ی View به لایه ی Model هست . وظیفه ی دیگه ای مثل محاسبات منطق تجاریِ برنامه و ... را نداره .

    در متد GetheaderText ، از المنت و کنترل ها استفاده کردید که اشتباست . کار با کنترل ها و المنت ها ، وظیفه ی لایه ی View هست . لایه ی ViewModel صرفا ارتباط بین اون دو لایه را ایجاد میکنه و داده های مورد نیازشون را منتقل میکنه .
    اون بخشی از این متد (و هر متد دیگه) را که مربوط به کار با کنترل هست را به لایه ی View و اون بخشی که مربوط به محاسبات منطق تجاری هست (و اگه وجود داره) را به لایه ی Model تون منتقل کنید .
    در لایه ی ViewModel ، فقط اطلاعات مورد نیاز را بین اون دولایه منتقل کنید .


    همچنین بجای اینکه اینترفیسِ INotifyPropertyChanged را برای ViewModel تون پیاده سازی کنید ، همونطور که دوستمون اشاره کردن ، میتونید کمپوننت MvvmLight را نصب کنید و از کلاس ViewModelBase ارث بری کنید . و متد RaisePropertyChanged را فقط فراخونی کنید .




  9. #9
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اهواز
    پست
    301

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک
    سلامی مجدد
    دوست مون اشاره کردن .
    اما دقت کنید که اگه به خاصیت های مخصوص command (مثل فعال یا غیر فعال سازی کنترل و ...) یا command های از پیش تعریف شده نیاز ندارید ، و صرفا میخواید در حد یک هندلر برای اتصال به رویداد از command استفاده کنید ، میتونید بجای command ، مستقیما از خودِ رویداد استفاده کنید .

    -------------------------

    در ViewModel تون ، کدهایی دیده میشه که نمیدونم برای چیه . فرضا نمیدونم متد GetPersonInfo و اشیاء هایی که توش ساخته میشن ، چی هستن .
    اما دقت کنید که ViewModel فقط برای ارتباط دادن و انتقال داده از لایه ی View به لایه ی Model هست . وظیفه ی دیگه ای مثل محاسبات منطق تجاریِ برنامه و ... را نداره .

    در متد GetheaderText ، از المنت و کنترل ها استفاده کردید که اشتباست . کار با کنترل ها و المنت ها ، وظیفه ی لایه ی View هست . لایه ی ViewModel صرفا ارتباط بین اون دو لایه را ایجاد میکنه و داده های مورد نیازشون را منتقل میکنه .
    اون بخشی از این متد (و هر متد دیگه) را که مربوط به کار با کنترل هست را به لایه ی View و اون بخشی که مربوط به محاسبات منطق تجاری هست (و اگه وجود داره) را به لایه ی Model تون منتقل کنید .
    در لایه ی ViewModel ، فقط اطلاعات مورد نیاز را بین اون دولایه منتقل کنید .


    همچنین بجای اینکه اینترفیسِ INotifyPropertyChanged را برای ViewModel تون پیاده سازی کنید ، همونطور که دوستمون اشاره کردن ، میتونید کمپوننت MvvmLight را نصب کنید و از کلاس ViewModelBase ارث بری کنید . و متد RaisePropertyChanged را فقط فراخونی کنید .
    خیلی ممنون از پاسختون،اینکه همه کدها رو اینجا نوشتم صرفا میخواستم روش ارتباط ویو و ویو مدل رو بدونم،فقط یه نکته دیگر اگر هر رکورد در دل خودش حاوی لیستی از جزییات باشه ایا میشه زمانی که روی رکورد کلیک کرد لیست مربوط به همون رکورد بایند بشه به لیست ویو؟
    بازم بسیار تشکر از اینکه وقت میگذارید

  10. #10

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط ma.andishe مشاهده تاپیک
    خیلی ممنون از پاسختون،فط یه سوال من زمانی که میخوام متد selection chageفراخونی بشه همزمان با اون یک پارامتر هم پاس کنه،چجوری باید اون رو پاس بدم،باز ممنون از پاسخگوییتون
    برای پاس دادان پارامتر باید به جای PassEventArgsToCommand="True" از پراپرتی Command Parameter استفاده کنید و در تعریف کامند هم باید نوع پارامتر رو مشخص کنید/
    برای اینکه با mvvm کمی اشنا بشید میتونید این پروژه که قبلا نوشتم رو اجرا کنید و بخش بخش اون رو تست کنید ساده و قابل فهم هست
    البته این پروژه برای اموزش فریمورک prism نوشته شده ولی در کنار اون میتونید این موارد رو هم یاد بگیرید
    ghost1372/MVVMPracticePrism: Best Prism MVVM Practice 2020 (github.com)

  11. #11
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اهواز
    پست
    301

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط barnamenevisjavan مشاهده تاپیک
    برای پاس دادان پارامتر باید به جای PassEventArgsToCommand="True" از پراپرتی Command Parameter استفاده کنید و در تعریف کامند هم باید نوع پارامتر رو مشخص کنید/
    برای اینکه با mvvm کمی اشنا بشید میتونید این پروژه که قبلا نوشتم رو اجرا کنید و بخش بخش اون رو تست کنید ساده و قابل فهم هست
    البته این پروژه برای اموزش فریمورک prism نوشته شده ولی در کنار اون میتونید این موارد رو هم یاد بگیرید

    ghost1372/MVVMPracticePrism: Best Prism MVVM Practice 2020 (github.com)
    خیلی ممنون .جشم حتما جک میکنم.منتها الان من دارم طبق پیشنهاد شما جلو میرم و اینتر اکتیوتی رو هم اضافه کردم ولی بازeventtocommandایراد میگیره و اونو نمیشناسه ایا باید رفرنس دیگه ای رو اضافه کنم

  12. #12

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط ma.andishe مشاهده تاپیک
    خیلی ممنون .جشم حتما جک میکنم.منتها الان من دارم طبق پیشنهاد شما جلو میرم و اینتر اکتیوتی رو هم اضافه کردم ولی بازeventtocommandایراد میگیره و اونو نمیشناسه ایا باید رفرنس دیگه ای رو اضافه کنم
    این بسته ناگت رو باید نصب کرده باشید
    NuGet Gallery | Microsoft.Xaml.Behaviors.Wpf 1.1.31

  13. #13
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اهواز
    پست
    301

    نقل قول: مشکل در بایند کردن دیتا گرید

    اینو هم نصب کردم ولی فکر میکنم یه ایرادی مربوط بهstyle باشه



    <Window x:Class="WpfMasksTest.Echreshavi.View.PersonInfoTe st"
    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"
    xmlns:local="clr-namespace:WpfMasksTest.Echreshavi.View"
    xmlns:swc="http://schemas.staware.com/winfx/2008/xaml/controls"
    xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:local1="clr-namespace:StaWare.Wpf.MasksBN.ViewModels.Person;as sembly=StaWare.Wpf.MasksBN"

    xmlns:hc="clr-namespace:DevExpress.Mvvm.UI.Interactivity;assembl y=DevExpress.Xpf.Core.v20.1"

    mc:Ignorable="d"
    Title="PersonInfoTest" Height="500" Width="1000">



    <Grid>
    <Grid.RowDefinitions>
    <RowDefinition Height="65"/>
    <RowDefinition/>
    <RowDefinition/>

    </Grid.RowDefinitions>

    <StackPanel Grid.Row="0" >
    <TextBox Width="250" Height="25" Margin="5" Text="{Binding Path=V_SEARCH , Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Background="#FFF3ECEC" Foreground="#FF080A07"/>
    <Button Width="140" Margin="4" Content="Search Person" Command="{Binding SearchPersonCommand}">
    <Button.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
    <GradientStop Color="Black" Offset="0"/>
    <GradientStop Color="White" Offset="1"/>
    </LinearGradientBrush>
    </Button.Background>
    </Button>

    </StackPanel>

    <StackPanel Grid.Row="1" >
    <DataGrid AutoGenerateColumns="True"

    Height="200"
    Margin="4"
    RowHeaderWidth="30"
    ColumnHeaderHeight="45"
    ItemsSource="{Binding ListPersons}"


    SelectedItem="{Binding Path=PersonID, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"


    CanUserReorderColumns="False"
    AlternatingRowBackground="#E6FCFCB8"
    CanUserAddRows="False"
    CanUserDeleteRows="False"
    CanUserResizeRows="False"
    SelectionMode="Single"
    IsReadOnly="True" IsSynchronizedWithCurrentItem="False" BorderBrush="#FF082A4B">


    <DataGrid.Resources>
    <local1:BindingProxy x:Key="proxy" Data="{Binding}" />
    </DataGrid.Resources>
    <DataGrid.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
    <GradientStop Color="Black" Offset="0"/>
    <GradientStop Color="#FF93EAEA" Offset="1"/>
    </LinearGradientBrush>
    </DataGrid.Background>
    <DataGrid.Columns>
    <DataGridTextColumn Header="{Binding Data.HeaderText, Source={StaticResource proxy}}"/>
    </DataGrid.Columns>

    <hc:Interaction.Triggers>
    <hc:EventTrigger EventName="SelectionChanged">
    <hc:EventToCommand Command="{Binding SwitchItemCmd}" PassEventArgsToCommand="True"/>
    </hc:EventTrigger>
    </hc:Interaction.Triggers>


    </DataGrid>

    </StackPanel>

    <StackPanel Grid.Row="2" >
    <dxe:ListBoxEdit ItemsSource="{Binding DetailPesrson, ElementName=grid}"
    DisplayMember="id"/>

    </StackPanel>


    </Grid>


    </Window>


  14. #14

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط ma.andishe مشاهده تاپیک
    اینو هم نصب کردم ولی فکر میکنم یه ایرادی مربوط بهstyle باشه



    <Window x:Class="WpfMasksTest.Echreshavi.View.PersonInfoTe st"
    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"
    xmlns:local="clr-namespace:WpfMasksTest.Echreshavi.View"
    xmlns:swc="http://schemas.staware.com/winfx/2008/xaml/controls"
    xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:local1="clr-namespace:StaWare.Wpf.MasksBN.ViewModels.Person;as sembly=StaWare.Wpf.MasksBN"

    xmlns:hc="clr-namespace:DevExpress.Mvvm.UI.Interactivity;assembl y=DevExpress.Xpf.Core.v20.1"

    mc:Ignorable="d"
    Title="PersonInfoTest" Height="500" Width="1000">



    <Grid>
    <Grid.RowDefinitions>
    <RowDefinition Height="65"/>
    <RowDefinition/>
    <RowDefinition/>

    </Grid.RowDefinitions>

    <StackPanel Grid.Row="0" >
    <TextBox Width="250" Height="25" Margin="5" Text="{Binding Path=V_SEARCH , Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Background="#FFF3ECEC" Foreground="#FF080A07"/>
    <Button Width="140" Margin="4" Content="Search Person" Command="{Binding SearchPersonCommand}">
    <Button.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
    <GradientStop Color="Black" Offset="0"/>
    <GradientStop Color="White" Offset="1"/>
    </LinearGradientBrush>
    </Button.Background>
    </Button>

    </StackPanel>

    <StackPanel Grid.Row="1" >
    <DataGrid AutoGenerateColumns="True"

    Height="200"
    Margin="4"
    RowHeaderWidth="30"
    ColumnHeaderHeight="45"
    ItemsSource="{Binding ListPersons}"


    SelectedItem="{Binding Path=PersonID, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"


    CanUserReorderColumns="False"
    AlternatingRowBackground="#E6FCFCB8"
    CanUserAddRows="False"
    CanUserDeleteRows="False"
    CanUserResizeRows="False"
    SelectionMode="Single"
    IsReadOnly="True" IsSynchronizedWithCurrentItem="False" BorderBrush="#FF082A4B">


    <DataGrid.Resources>
    <local1:BindingProxy x:Key="proxy" Data="{Binding}" />
    </DataGrid.Resources>
    <DataGrid.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
    <GradientStop Color="Black" Offset="0"/>
    <GradientStop Color="#FF93EAEA" Offset="1"/>
    </LinearGradientBrush>
    </DataGrid.Background>
    <DataGrid.Columns>
    <DataGridTextColumn Header="{Binding Data.HeaderText, Source={StaticResource proxy}}"/>
    </DataGrid.Columns>

    <hc:Interaction.Triggers>
    <hc:EventTrigger EventName="SelectionChanged">
    <hc:EventToCommand Command="{Binding SwitchItemCmd}" PassEventArgsToCommand="True"/>
    </hc:EventTrigger>
    </hc:Interaction.Triggers>


    </DataGrid>

    </StackPanel>

    <StackPanel Grid.Row="2" >
    <dxe:ListBoxEdit ItemsSource="{Binding DetailPesrson, ElementName=grid}"
    DisplayMember="id"/>

    </StackPanel>


    </Grid>


    </Window>

    شما اومدی از تگ hc که من تو مثال استفاده میکردم استفاده کردی بعد اومدی تگ hc رو برای devexpress تعریف کردی!!! در صورتی که باید برای پکیج ناگت تعریف کنی
    xmlns:hc="http://schemas.microsoft.com/xaml/behaviors"

    مثال هاش رو ببینید
    XamlBehaviorsWpf/samples/XAMLBehaviorsSample/XAMLBehaviorsSample at master · microsoft/XamlBehaviorsWpf (github.com)

  15. #15
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اهواز
    پست
    301

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط barnamenevisjavan مشاهده تاپیک
    شما اومدی از تگ hc که من تو مثال استفاده میکردم استفاده کردی بعد اومدی تگ hc رو برای devexpress تعریف کردی!!! در صورتی که باید برای پکیج ناگت تعریف کنی
    xmlns:hc="http://schemas.microsoft.com/xaml/behaviors"

    مثال هاش رو ببینید
    XamlBehaviorsWpf/samples/XAMLBehaviorsSample/XAMLBehaviorsSample at master · microsoft/XamlBehaviorsWpf (github.com)
    ببخشید اگه وققتون رو گرفتم اگه میشه با یه مثال ساده ‌ه گرید و لیست ویو رو داشته باشی و یا سمپل کدی که این سناریو رو داشته باشه،ممنون میشم

  16. #16

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط ma.andishe مشاهده تاپیک
    خیلی ممنون از پاسختون،اینکه همه کدها رو اینجا نوشتم صرفا میخواستم روش ارتباط ویو و ویو مدل رو بدونم،
    سلامی مجدد
    ارتباط View با ViewModel زمانی انجام میشه که View تون بخواد با Model تون ارتباط برقرار کنه . چون ViewModel ، رابط و ارتباط دهنده ی لایه های View با Model هست .

    اون هم ViewModel نباید هر شی ای را انتقال بده . در واقع ، هر لایه ، وظایف خودش را باید انجام بده . لایه ی View ، با کنترل ها سر و کار داره ، بنابراین نباید در Model ، با شیِ کنترل ای سر و کار داشته باشین تا ViewModel تون اون شیِ کنترل را به Model تون منتقل کنه (نباید این طور باشه) .

    این ، از وظایف لایه ها .
    اما روش ارتباط View با ViewModel ، به انواع مختلفی میتونه ارتباط داشته باشن .
    ارتباط View با ViewModel ، میتونه توسط Binding ، توسط Command ها ، توسط رویدادها و متدها و ... انجام بشه .
    ارتباط ViewModel با View هم میتونه از طریق پیاده سازی اینترفیس INotifyPropertyChanged و INotifyCollectionChanged و ObservableCollection در ViewModel (در صورتی که Binding انجام بشه) و یا توسط مقدار بازگشتی در یک متد (و ...) انجام بشه .

    نقل قول نوشته شده توسط ma.andishe مشاهده تاپیک
    فقط یه نکته دیگر اگر هر رکورد در دل خودش حاوی لیستی از جزییات باشه ایا میشه زمانی که روی رکورد کلیک کرد لیست مربوط به همون رکورد بایند بشه به لیست ویو؟
    بازم بسیار تشکر از اینکه وقت میگذارید
    عملِ Binding را برای هر جایی میتونید استفاده کنید .
    حتی Binding را میتونید از View ، به اعضای Model هم انجام بدید (البته به واسطه ی اعضای ViewModel باید به اعضای Model دسترسی داشته باشید که مشخص هست) .

    چون Binding ، زمان اجرا هم عملیاتش را انجام میده . یعنی در زمان اجرا و در رویدادِ مورد نظرش که اتفاق افتاد ، دنبال Source اش یا DataContext ئه والدش میگرده (و تا اون موقع ، میتونیم هم تغییرشون بدیم) .

  17. #17
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اهواز
    پست
    301

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک
    سلامی مجدد
    ارتباط View با ViewModel زمانی انجام میشه که View تون بخواد با Model تون ارتباط برقرار کنه . چون ViewModel ، رابط و ارتباط دهنده ی لایه های View با Model هست .

    اون هم ViewModel نباید هر شی ای را انتقال بده . در واقع ، هر لایه ، وظایف خودش را باید انجام بده . لایه ی View ، با کنترل ها سر و کار داره ، بنابراین نباید در Model ، با شیِ کنترل ای سر و کار داشته باشین تا ViewModel تون اون شیِ کنترل را به Model تون منتقل کنه (نباید این طور باشه) .

    این ، از وظایف لایه ها .
    اما روش ارتباط View با ViewModel ، به انواع مختلفی میتونه ارتباط داشته باشن .
    ارتباط View با ViewModel ، میتونه توسط Binding ، توسط Command ها ، توسط رویدادها و متدها و ... انجام بشه .
    ارتباط ViewModel با View هم میتونه از طریق پیاده سازی اینترفیس INotifyPropertyChanged و INotifyCollectionChanged و ObservableCollection در ViewModel (در صورتی که Binding انجام بشه) و یا توسط مقدار بازگشتی در یک متد (و ...) انجام بشه .



    عملِ Binding را برای هر جایی میتونید استفاده کنید .
    حتی Binding را میتونید از View ، به اعضای Model هم انجام بدید (البته به واسطه ی اعضای ViewModel باید به اعضای Model دسترسی داشته باشید که مشخص هست) .

    چون Binding ، زمان اجرا هم عملیاتش را انجام میده . یعنی در زمان اجرا و در رویدادِ مورد نظرش که اتفاق افتاد ، دنبال Source اش یا DataContext ئه والدش میگرده (و تا اون موقع ، میتونیم هم تغییرشون بدیم) .


    ببینید الان یه مشکلی که دارم اینه طبق روش دوستمون رفتم اول اینکه از event command ایراد میگیره و طبق مثالاشون هم رفتم باز نشناخت و دوم میخوام محتواری رکورد سلکت شده رو تو ویو دریافت کنم،مننون میشم با سمپل کد راهنمایی کنید،واقعا اذیت شدم هنوز ودرست نشده

  18. #18

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط ma.andishe مشاهده تاپیک
    ببخشید اگه وققتون رو گرفتم اگه میشه با یه مثال ساده ‌ه گرید و لیست ویو رو داشته باشی و یا سمپل کدی که این سناریو رو داشته باشه،ممنون میشم
    مشکل از من بود من قبلا eventToCommand رو برای استفاده شخصی ایجاد کرده بودم شما میتونید از جایگزینش invokeCommand استفاده کنید
    براتون یه نمونه مثال نوشتم
    https://uupload.ir/view/wpfapp1_rqsp.rar/

  19. #19

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط ma.andishe مشاهده تاپیک
    ببینید الان یه مشکلی که دارم اینه طبق روش دوستمون رفتم اول اینکه از event command ایراد میگیره و طبق مثالاشون هم رفتم باز نشناخت و دوم میخوام محتواری رکورد سلکت شده رو تو ویو دریافت کنم،مننون میشم با سمپل کد راهنمایی کنید،واقعا اذیت شدم هنوز ودرست نشده
    دوست مون اشاره کردن . بررسی کنید که مشکل تون حل شد؟
    اگه حل نشد ، پروژه را اینجا بذارید (منظورم از کد ، خلاصه شده و جایی که مشکل دارین ، بود) .

  20. #20
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اهواز
    پست
    301

    نقل قول: مشکل در بایند کردن دیتا گرید

    نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک
    دوست مون اشاره کردن . بررسی کنید که مشکل تون حل شد؟
    اگه حل نشد ، پروژه را اینجا بذارید (منظورم از کد ، خلاصه شده و جایی که مشکل دارین ، بود) .
    خیلی ممنون حل شد،تشکر

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: یک شنبه 23 تیر 1392, 18:31 عصر
  2. پاسخ: 4
    آخرین پست: سه شنبه 17 آبان 1390, 19:27 عصر
  3. تبدیل نوع دیتا تایپ (تبدیل دیتا تایپ های سیستمی وی بی به دیتا تایپ های بانک اطلاعاتی)
    نوشته شده توسط arman_Delta2002 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 1
    آخرین پست: جمعه 28 مرداد 1390, 21:40 عصر
  4. پاسخ: 2
    آخرین پست: چهارشنبه 17 آذر 1389, 20:08 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •