我有以下XAML类:
<ListView Controls:ListViewColumns.Stretch="true"
Name="myListItems" SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Width="50">
<GridViewColumn.Header>
</GridViewColumn.Header>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Name="btnDelete"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Padding="0"
Margin="0"
IsEnabled="{Binding Converter={StaticResource inverseBoolConverter},
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type WO:OpCompTab}}, Path=DisableAll}"
Click="btnDelete_Click" Tag="{Binding Path=.}">
<Image Source="/Win7;component/Images/Icons/Remove.png"
Width="{StaticResource IconWidth}"
Height="{StaticResource IconHeight}" />
</Button>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
通过将可观察集合挂钩到其ItemSource属性来填充列表视图。这会为可观察集合中的每个项目生成一个整洁的删除按钮列。
但这引起了一个窘境:我如何访问&#34; btnDelete&#34; ListView的一行?我想逐行更改其图标。这只是将可观察集合以某种方式绑定到单元格模板的问题吗?
答案 0 :(得分:1)
不是对Image.Source进行硬编码,而是将其绑定到行对象中的属性。另一种方法是创建值转换器并传入行或某些属性,如果您不能或不想修改行对象以添加ImageSource属性。让值转换器根据传入的属性或其他逻辑返回正确的图像源。