Xaml ControlTemplate(样式)绑定项资源属性

Xaml ControlTemplate(样式)绑定项资源属性,xaml,data-binding,winrt-xaml,Xaml,Data Binding,Winrt Xaml,我想在ListView中以样式(ControlTemplate)进行数据绑定 我的ListView看起来像: <ListView ItemTemplateSelector="{StaticResource ItemTemplate_Selector}" ItemContainerStyleSelector="{StaticResource ItemContainerStyle_Selector}"/> 从ItemsSource获取的大多数属性都绑定在DataTemplate中:

我想在ListView中以样式(ControlTemplate)进行数据绑定

我的ListView看起来像:

<ListView ItemTemplateSelector="{StaticResource ItemTemplate_Selector}" ItemContainerStyleSelector="{StaticResource ItemContainerStyle_Selector}"/>

从ItemsSource获取的大多数属性都绑定在DataTemplate中:

e、 g


因为有一个区域将受到不同视觉状态的影响,并且该区域中显示了一个属性,所以我必须将其绑定到ItemContainerStyle中,如:

e、 g


在我看来,itemContainerStyle的目标是ListView中的itemSource,因此我可以访问它的属性(意味着我可以直接绑定属性名)

但是,在应用程序中看不到HeaderText的文本


我想知道我在样式中的绑定是否错误?

为了查看您的绑定是否工作,请尝试在绑定上使用虚拟转换器,并在其中设置一个断点,以查看它是否被命中。此外,尽管它指的是silverlight,但可能适合您。该样式针对的是ListViewItem,它与ItemTemplate具有相同的DataContext。事实上,从ItemTemplate创建的控件从包含的ListViewItem继承其DataContext。因此ItemTemplate和ItemContainerStyle中的绑定都指向同一个源对象,即数据项,即ItemsSource集合中的元素。@Clemens是的!这就是我的想法,所以我直接以ListViewItem样式绑定ItemsSource集合元素的属性名。但是我不确定为什么样式中的属性不能正确显示
<DataTemplate x:Key="OneOfItem">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Text="{Binding Name}"/>
        <StackPanel Grid.Row="1">
            <RichTextBlock Grid.Column="0" local:HyperlinkExtensions.Text="{Binding Message}"/>
            <TextBlock Grid.Column="1" Text="{Binding Time}"/>
        </StackPanel>
    </Grid>
</DataTemplate>
<Style x:Key="HeadPicStyle" TargetType="ListViewItem">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListViewItem">                    
                <Border>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition x:Name="Header" Width="20"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <Grid Grid.Column="0">
                            <TextBlock x:Name="HeaderText" Text="{Binding Header}"/>
                        </Grid>
                        <ContentPresenter Grid.Column="1" x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Grid>
                    <VisualStateManager.VisualStateGroups>                            
                        <VisualStateGroup x:Name="AdaptiveStatesTest">
                            <VisualState x:Name="DefaultStateTest">
                                <VisualState.StateTriggers>
                                    <AdaptiveTrigger MinWindowWidth="{StaticResource WideStateChangeThreshold}" />
                                </VisualState.StateTriggers>
                            </VisualState>
                            <VisualState x:Name="NarrowStateTest">
                                <VisualState.StateTriggers>
                                <AdaptiveTrigger MinWindowWidth="{StaticResource NarrowStateWindowWidth}" />
                                </VisualState.StateTriggers>
                                <VisualState.Setters>
                                    <Setter Target="Header.Width" Value="100"/>
                                </VisualState.Setters>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>                        
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>