نقل قول نوشته شده توسط 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;


}





}


}




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