Итак, я нахожусь в упущенном состоянии и надеюсь на некоторое руководство. Я использую шаблон MVVM и EF.Найти элементы в ObservableCollection и обновить UI
My View содержит привязку данных, привязанную к наблюдаемой коллекции в модели представления. Пользовательский интерфейс дополнительно содержит 3 списков с возможными данными для сведения к минимуму показанных данных.
Таким образом, я искал поиск и не нашел ничего, что мог бы использовать (или, возможно, не понял его правильно).
Как выполнить поиск и выбор элементов из ObservableCollection и соответственно обновить datagrid?
public ObservableCollection<DimTargets> TargetParameters { get; set; }
private void SelectionChanged(object obj)
{
if (obj is FactTargets)
{
SelectedFactTarget = (FactTargets)obj;
}
else if (obj is DimLocation)
{
SelectedLocation = (DimLocation)obj;
ViewCollection.Select(x => x.Location == SelectedLocation.Location);
TargetParameters.Where(x => x.FactTargets == SelectedLocation.FactTargets);
}
else //DimBladeType
{
SelectedBladeType = (DimBladeType)obj;
int[] a = DimTargetsController.ReturnBladeType(SelectedBladeType);
foreach (int i in a)
{
TargetParameters.Single(k => k.ID == i);
}
var os = TargetParameters.Where(d => d.ID ==);
TargetParameters = Convert<DimTargets>(os);
//TargetParameters.Where(ka => ka.ID == a);
//TargetParameters = new ObservableCollection<DimTargets>(TargetParameters.Where(t => t.FactTargets == SelectedBladeType.FactTargets));
//var obs = TargetParameters.Where(t => t.FactTargets == SelectedBladeType.FactTargets);
//TargetParameters = Convert<DimTargets>(obs);
//ViewCollection.Select(x => x.BladeType == SelectedBladeType.BladeType).ToList();
}
}
public ObservableCollection<T> Convert<T>(IEnumerable original)
{
return new ObservableCollection<T>(original.Cast<T>());
}
XAML:
ComboBox ItemsSource="{Binding FactTargetCollection, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedFactTarget}" DisplayMemberPath="FYQuater" Behaivor:SelectionChangedBehaviour.Command="{Binding SelectionChangedCommand}"/>
<ComboBox ItemsSource="{Binding LocationCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedLocation}" DisplayMemberPath="Location" Behaivor:SelectionChangedBehaviour.Command="{Binding SelectionChangedCommand}"/>
<ComboBox ItemsSource="{Binding BladeTypeCollection, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedBladeType}" DisplayMemberPath="BladeType" Behaivor:SelectionChangedBehaviour.Command="{Binding SelectionChangedCommand}"/>
<Button Content="Submit" Style="{StaticResource BaseButtonStyle}"></Button>
</StackPanel>
<StackPanel x:Name="WorkPanel" DockPanel.Dock="Right">
<DataGrid ItemsSource="{Binding TargetParameters}">
</DataGrid>
</StackPanel>`
Надеется, что это дает лучшее представление о том, что я пытаюсь сделать. код C# заполнен примерами с тем, что я пробовал.
Пожалуйста, пост код – Eldho
Вы спрашиваете, как выбрать строки в сетке данных на основе на собственность вашей viewmodel? [Это может помочь] (http://stackoverflow.com/a/4902454/424129) ('Selector' - это базовый класс' DataGrid', поэтому 'DataGrid' имеет свойство' SelectedItem', как 'ComboBox' и т. Д.). 'DataGrid.SelectionMode',' DataGrid.SelectionUnit' и 'DataGrid.SelectedCells' также могут быть полезны. –
Вы назначаете новое значение «TargetParameters» без уведомления пользовательского интерфейса. Вам нужно запустить событие 'PropertyChanged' в настройке для« TargetParameters ». Какая цель используется в любом случае? Какова цель «TargetParameters.Single (k => k.ID == i);'? Этот вызов ничего не делает. 'TargetParameters.Where (x => x.FactTargets == SelectedLocation.FactTargets);' также ничего не делает. Вы запускаете 'PropertyChanged' в установщике для' SelectedLocation'? Если у вас нет события PropertyChanged, ваша модель просмотра должна реализовать 'INotifyPropertyChanged'. –