Я создаю приложение WPF, используя шаблон MVVM (по крайней мере, я пытаюсь).Существует <TabControl>
с ограничением ItemsSource
, что является ObservableCollection<TabModel> Tabs
.Tabs
имеет свойство Name
и Items
, где Items - это список ControlModel
, что означает Controls.У меня проблема с привязкой свойства IsEnabled
к Grid
, где размещены Items
.
Ниже приведена часть моего кода, представляющая, как я это делаю:
private ObservableCollection<TabModel> tabs;
public ObservableCollection<TabModel> Tabs
{
get
{
if (tabs == null)
{
tabs = new ObservableCollection<TabModel>();
RefreshTabs();
}
return tabs;
}
set
{
tabs = value;
OnPropertyChanged("Tabs");
}
}
\\Tab Model
public string Name { get; set; }
private List<ControlModel> items;
public List<ControlModel> Items
{
get { return items; }
set
{
items = value;
OnPropertyChanged("Items");
}
}
И xaml ...
<TabControl Margin="0,100,0,0" ItemsSource="{Binding Tabs,UpdateSourceTrigger=PropertyChanged}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ScrollViewer VerticalScrollBarVisibility="Hidden">
<Grid Margin="5,5,5,5" IsEnabled="{Binding IsProductEditionEnabled}">
<!--<Grid Margin="5,5,5,5">-->
<ItemsControl ItemsSource="{Binding Items,UpdateSourceTrigger=PropertyChanged}" ItemTemplateSelector="{StaticResource ControlTemplateSelector}"/>
</Grid>
</ScrollViewer>
</DataTemplate>
</TabControl.ContentTemplate>
Часть ... <Grid Margin="5,5,5,5" IsEnabled="{Binding IsProductEditionEnabled}">
не работает.Там нет ошибки.Эта сетка всегда отключена.По умолчанию это false.
private bool isProductEditionEnabled = false;
public bool IsProductEditionEnabled
{
get { return isProductEditionEnabled; }
set
{
isProductEditionEnabled = value;
OnPropertyChanged("IsProductEditionEnabled");
}
}
Вопрос: как правильно связать IsEnabled
в моем случае?