如何修改Cell Header中定义的按钮实例?

时间:2015-07-16 21:27:47

标签: c# wpf xaml data-binding

我有以下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的一行?我想逐行更改其图标。这只是将可观察集合以某种方式绑定到单元格模板的问题吗?

1 个答案:

答案 0 :(得分:1)

不是对Image.Source进行硬编码,而是将其绑定到行对象中的属性。另一种方法是创建值转换器并传入行或某些属性,如果您不能或不想修改行对象以添加ImageSource属性。让值转换器根据传入的属性或其他逻辑返回正确的图像源。