XAML 绑定到ObservableCollection的列表视图,如果每个列表视图项都包含一个可以单击的复选框,如何获取当前的ObservableCollection项

5us2dqdw  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(92)

我昨天开始了我的xaml之旅,我还在为几件事而挣扎。我想达到的目标:
1.[X]创建列表视图
1.[X]将listview绑定到Observable Collection
1.[X]创建一个列表视图项目模板,其中包含某些项目
1.[?]当您单击Listview项中的复选框时,将Observable Collection中的当前ITEM传递给将处理on checked和on unchecked事件的eventhandlers。
可能的答案:
1.我假设我可以将对象强制转换回一个复选框,然后遍历Listview,直到找到特定的复选框,然后获取该ITEM,但我并不真正喜欢这种解决方案。
1.看起来您可以创建一个继承ICommandInferfface的类,但是我不明白如何在xaml中绑定来获取当前项。

<ListView ItemsSource="{Binding Path=SourceInfoDataSource}">
                    <ListView.ItemTemplate>
                        <DataTemplate x:Name="SourceInfoListItem">
                            <StackPanel Orientation="Horizontal" Visibility="{Binding Path=Show, Converter={StaticResource VisibleIfTrueConverter}}">
                                <CheckBox Checked="CheckBox_Checked"></CheckBox>
                                <Ellipse Height="20" Width="20" VerticalAlignment="Center">
                                    <Ellipse.Fill>
                                        <!--<ImageBrush ImageSource="Placeholder.png"/>-->
                                        <SolidColorBrush Color="#FFFF0000" />
                                    </Ellipse.Fill>
                                </Ellipse>
                                <TextBlock VerticalAlignment="Center" Margin="5,0,0,0" Text="{Binding Path=Name}"></TextBlock>
                                <TextBlock VerticalAlignment="Center" Margin="5,0,0,0" Text="={Binding Path=Value, Converter={StaticResource valueToStringConverter}}"></TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
kq4fsx7k

kq4fsx7k1#

你提到SourceInfoDataSource是一个ObservableCollection(T的),但什么是T?是否为以下类型:INotifyPropertyChanged?如果是这样,我会考虑将Checkbox-> IsChecked绑定到T上的一个属性,如“IsSelected”。在这种情况下,您可以订阅T的每个示例上的PropertyChanged事件,并且当该事件处理程序命中时,您可以检查e.PropertyName是“IsSelected”并且sender(强制转换为T)的IsSelected == true

相关问题