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