Отображение коллекции предметов
Ваш вопрос не совсем понятен, но я считаю, что вы хотите показать список предметов в вашем пользовательском интерфейсе; однако, как в настоящее время реализовано, ваш XAML действительно структурирован так, чтобы отображать один элемент.
Чтобы отобразить список, вам нужно просмотреть любое из множества представлений коллекции (например, ListView * 1006). *, GridView , et c.).
Например:
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisibilty"/>
</Window.Resources>
<Grid Background="#FFF4F4F5" Margin="8,165,8,8">
<ListView ItemsSource="{Binding CavTogglesProperties}">
<ListView.ItemTemplate>
<DataTemplate>
<ToggleButton Content="{Binding Text}" IsChecked="{Binding Toggle}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
Чтобы отображать только определенные c элементы, необходимо отфильтровать список в ViewModel, а не привязка видимости. Если видимые элементы не изменяются во время отображения, просто отфильтруйте список при его заполнении.
Если, однако, видимости изменятся, и вы хотите, чтобы представление отражало эти изменения, посмотрите на реализацию фильтр для источника ваших предметов, как описано в этом вопросе: Как мне отфильтровать ListView в WPF? .
Поскольку вы уже используете ObservableCollection и ObservableObject, все должно автоматически обновляться.
Отображение одного элемента из коллекции
Если я неправильно прочитал ваш вопрос и вы хотите узнать, как показать один элемент из коллекции, есть несколько разных способов решения этой проблемы:
- Предоставить отдельный элемент как свойство в ViewModel, чтобы View не приходилось копаться в списке.
- Создайте конвертер , который принимает сбор и индексирование, затем вытаскивает правильный элемент.
Я бы настоятельно рекомендовал перейти к варианту 1, поскольку он наиболее t соответствует MVVM, производя самый чистый и проверяемый код.
Например:
private ObservableCollection<CavitySelect> _CavTogglesProperties;
public ObservableCollection<CavitySelect> CavTogglesProperties
{
get { return _CavTogglesProperties; }
set
{
_CavTogglesProperties = value;
RaisePropertyChanged("CavTogglesProperties");
}
}
private CavitySelect _SpecificCavToggle;
public CavitySelect SpecificCavToggle
{
get { return _SpecificCavToggle; }
set
{
_SpecificCavToggle= value;
RaisePropertyChanged("SpecificCavToggle");
}
}
public MyViewModel()
{
this.CavTogglesProperties = GetCavities();
this.SpecificCavToggle = this.CavTogglesProperties[0];
}
public ObservableCollection<CavitySelect> GetCavities()
{
CavitySelect t11 = new CavitySelect();
CavitySelect t12 = new CavitySelect();
CavitySelect t13 = new CavitySelect();
CavitySelect t14 = new CavitySelect();
CavitySelect t15 = new CavitySelect();
CavitySelect t16 = new CavitySelect();
CavitySelect t26 = new CavitySelect();
CavitySelect t21 = new CavitySelect();
CavitySelect t22 = new CavitySelect();
CavitySelect t23 = new CavitySelect();
CavitySelect t24 = new CavitySelect();
CavitySelect t25 = new CavitySelect();
ObservableCollection<CavitySelect> temp = new ObservableCollection<CavitySelect>() {t11,t12,t13,t14,t15,t16,t21,t22,t23,t24,t25,t26};
return temp;
}