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

本文关键字:定义 按钮 实例 Header Cell 何修改 修改 | 更新日期: 2023-09-27 18:03:02

我有以下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>

listview通过将一个可观察对象集合连接到它的ItemSource属性来填充。这会为可观察集合中的每个项生成一个整洁的Delete按钮列。

但这提出了一个困境:我如何访问单个行ListView的"btnDelete"?我想在每行的基础上改变它的图标。是否只是将可观察集合以某种方式绑定到单元模板的问题?

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

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