Xaml ControlTemplate(样式)绑定项资源属性
我想在ListView中以样式(ControlTemplate)进行数据绑定 我的ListView看起来像: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 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>