ハイ私は解決策を見つけました..
2 things to be happened here..
1) 取得したすべてのデータの結果が Employees にあります。したがって、コンボボックスから任意の値を選択した場合、選択した結果をデータグリッドにバインドする必要があります。そのためには、Employees.Clear() メソッドを使用して Employees をクリアする必要があります。その後、Foreachループを使用して「semp」にアクセスし、値を返します..
2) 従業員にはコンボボックスで選択された値が 1 つだけ含まれるようになりました。そのため、Datagrid と ComboBox には 1 つの値しか表示されません。それをどう乗り越えるか.. 結果は以下の通りです。
XAML:
<ComboBox ItemsSource="{Binding disemp}" DisplayMemberPath="Dept" SelectedItem="{Binding Names, Mode=TwoWay}" Margin="130,117,0,0" Height="26" VerticalAlignment="Top" HorizontalAlignment="Left" Width="120">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<si:CallDataMethod Method="BindNew"/>
<si:SetProperty TargetName="LayoutRoot"/>
</i:EventTrigger>
<i:EventTrigger EventName="Loaded">
<si:CallDataMethod Method="Selnew"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
ビューモデル:
public IList<Employee> Employees { get; private set; }
public ObservableCollection<Employee> disemp { get; private set; }
public ObservableCollection<Employee> dgrids { get; private set; }
public ObservableCollection<Employee> EmployeeCopy{ get; private set; }
public EmployeeListViewModel()
{
Employees = Silverlight_MVVM.DataHelper.EmployeeDataHelper.EmployeeData ();
disemp = Silverlight_MVVM.DataHelper.EmployeeDataHelper.Employeedist();
dgrids=Silverlight_MVVM.DataHelper.EmployeeDataHelper.dgrid();
}
public void BindNew()
{
Employee emplo = new Employee();
Employees = Silverlight_MVVM.DataHelper.EmployeeDataHelper.EmployeeData();
EmployeeCopy = dgrids.ToList ();
string name = Names.Dept.ToString();
var semp = from emp in EmployeeCopy where emp.Dept.Equals(name) select emp;
List<Employee> lt = new List<Employee>();
lt = semp.ToList();
lt.Count();
//int i;
Employees.Clear();
for (int i = 0; i < lt.Count(); i++)
{
emplo.Fname = lt[0].Fname.ToString();
emplo.Sname = lt[0].Sname.ToString();
emplo.Dept = lt[0].Dept.ToString();
Employees.Add(emplo);
}
RaisePropertyChanged("Employees");
}
}
ダミーのObservableCollectionsを追加します..それだけです..問題は解決しました..