none
win8 binding RRS feed

  • 问题

  • win8中ListView如何用binding根据选中的项选中CheckBox
            <ListView HorizontalAlignment="Left" Height="442" Margin="975,28,0,0" Name="lview" VerticalAlignment="Top" Width="352">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <CheckBox IsChecked="{Binding ListViewItem.IsSelected,RelativeSource={RelativeSource  Mode=TemplatedParent}}"/> 
                            <TextBlock Margin="10,2" FontSize="15" Text="{Binding}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

    2012年12月21日 9:52

答案

  • 这个在win8里面用绑定是做不了的,这个跟WPF里面不一样,你可以relativesource到相应的ListViewItem。IsSelected属性,在win8里面最多就是TemplatedParent,而你的CheckBox的Templateparent是Contentpresenter,帮到这上面没有实际用途的。

    我建议用代码做吧,就是用SelectionChanged事件和Checked事件,然后再事件里面通过代码去改变属性。

    其实非要用绑定的话,你可以创建AttachedProperty去做,不过这样太麻烦了。


    Sheldon _Xiao
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年12月25日 9:45

全部回复

  • 如果你是要在选中时更改选中项CheckBoxIsChecked值的话,可以根据selectindex找到绑定源的对应item,修改item中对应于IsChecked的值
    2012年12月24日 8:15
  • 这个在win8里面用绑定是做不了的,这个跟WPF里面不一样,你可以relativesource到相应的ListViewItem。IsSelected属性,在win8里面最多就是TemplatedParent,而你的CheckBox的Templateparent是Contentpresenter,帮到这上面没有实际用途的。

    我建议用代码做吧,就是用SelectionChanged事件和Checked事件,然后再事件里面通过代码去改变属性。

    其实非要用绑定的话,你可以创建AttachedProperty去做,不过这样太麻烦了。


    Sheldon _Xiao
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年12月25日 9:45