首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以DataContext的样式访问ListViewItem的ListViewItem?

如何以DataContext的样式访问ListViewItem的ListViewItem?
EN

Stack Overflow用户
提问于 2018-03-17 16:24:22
回答 1查看 261关注 0票数 0

我有一个ObservableCollection<Foo> fooListMasterDetailsView的下面的代码,它只是一个更高级的ListView

代码语言:javascript
复制
<controls:MasterDetailsView
            Grid.Row="1"
            x:Name="MasterDetailsViewControl"
            ItemsSource="{x:Bind fooList}"
            SelectedItem="{x:Bind Selected, Mode=OneWay}"
            ItemTemplate="{StaticResource ItemTemplate}"
            DetailsTemplate="{StaticResource DetailsTemplate}"
            NoSelectionContentTemplate="{StaticResource NoSelectionContentTemplate}"
            BorderBrush="Transparent">
    <controls:MasterDetailsView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="Background">
                <Setter.Value>
                    <Binding Path="PathToFooBrushGoesHere" />
                </Setter.Value>
            </Setter>
        </Style>
    </controls:MasterDetailsView.ItemContainerStyle>
</controls:MasterDetailsView>

每个foo都有一个单独的属性foo.Brush,我想使用它来绘制ListViewItem的背景。我想不出我需要在PathToFooBrushGoesHere中放什么才能让ListViewItem访问拥有Brushfoo的属性。

我的想法是,通过设置一个不同的DataContext,它可能是可行的,但我想不出如何能够以ListViewItem样式访问ItemTemplateDataContext

一个人应该如何进行这种造型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-19 08:10:43

可以通过将Brush属性绑定到ItemTemplate of MasterDetailsView来实现此效果。

首先,将MasterDetailsView.ItemContainerStyle更改为:将ListViewItemVerticalContentAlignmentHorizontalContentAlignment属性设置为Stretch

代码语言:javascript
复制
<controls:MasterDetailsView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="VerticalContentAlignment" Value="Stretch"/>
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    </Style>
</controls:MasterDetailsView.ItemContainerStyle>

然后将Brush属性绑定到ItemTemplate of MasterDetailsView

代码语言:javascript
复制
<DataTemplate x:Key="ItemTemplate" x:DataType="local:Foo">
    <Grid Background="{x:Bind Brush}">
        <TextBlock Text="ItemTemplate"/>
    </Grid>
</DataTemplate>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49339161

复制
相关文章

相似问题

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