首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TabItem内容IsEnabled绑定

TabItem内容IsEnabled绑定
EN

Stack Overflow用户
提问于 2018-10-17 07:44:57
回答 1查看 437关注 0票数 1

我正在使用MVVM模式创建一个WPF应用程序(至少我正在尝试)。有<TabControl>和绑定ItemsSource,这是一个ObservableCollection<TabModel> TabsTabs具有NameItems属性,其中项是ControlModel的列表,这意味着控件。将IsEnabled属性绑定到放置ItemsGrid有问题。

下面是我的代码的一部分,展示了我这样做的方式:

代码语言:javascript
复制
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..。

代码语言:javascript
复制
<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}">

不起作用。没有错误。这个网格总是被禁用的。默认情况下是假的。

代码语言:javascript
复制
private bool isProductEditionEnabled = false;

    public bool IsProductEditionEnabled
    {
        get { return isProductEditionEnabled; }
        set
        {
            isProductEditionEnabled = value;
            OnPropertyChanged("IsProductEditionEnabled");
        }
    }

问题是:在我的情况下如何正确地绑定IsEnabled

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-17 08:25:47

您在DataTemplate中,所以您需要在执行绑定时指定父DataContext在哪里,如下所示:

代码语言:javascript
复制
<DataTemplate>
    <ScrollViewer VerticalScrollBarVisibility="Hidden">
        <Grid IsEnabled="{Binding Path=DataContext.IsProductEditionEnabled, 
                RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}">
        </Grid>
    </ScrollViewer>
</DataTemplate>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52849695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档