0

我必须从 ListView.ItemTemplate 中的代码绑定到局部变量。我尝试过使用数据上下文:

            <ListView Name="listView" ItemsSource="{Binding}" DataContext="{Binding}" VerticalAlignment="Stretch" MaxHeight="300" Background="White" Foreground="Black" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderBrush="#FFCDCDCD" BorderThickness="1" ScrollViewer.VerticalScrollBarVisibility="Auto" IncrementalLoadingTrigger="None" SelectionChanged="listView_SelectionChanged" >
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal" MaxHeight="25" >
                            <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Text}" Width="{Binding Width}" />
                            <Image Grid.Row="0" Grid.Column="1" Source="{Binding Image}" Stretch="None" Width="40" HorizontalAlignment="Left" Margin="4,0,0,0" />
                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

代替 "Width="{Binding Width}"" 我想从 datacontext 获得属性 - 其余数据与 itemsSource 连接。如何“告诉”xaml 使用数据上下文中的属性?(现在它返回错误“找不到属性”)。我不想更改我的 itemsource 并添加宽度,因为它对于每个元素都是恒定的(很明显;))。

先感谢您 :)

4

1 回答 1

3

确实使用了DataContext,这对于ItemTemplate是项目。你可以走上树找到另一个DataContext,在这种情况下你想要ListView's

{Binding DataContext.Width,
         RelativeSource={RelativeSource AncestorType=ListView}}
于 2012-08-14T23:06:13.953 回答