Kok*_*Teh 0 wpf listview selecteditem mvvm childcontrol
如何更好地ListView.SelectedItem控制内部的儿童控制ListView?
<ListView ItemsSource="{Binding Path=Records, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True">
<ListView.SelectedItem>
<Binding Path="SelectedRecord" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"/>
</ListView.SelectedItem>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="IsSelected" Value="True"/>
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.Resources>
<DataTemplate DataType="x:Type ListViewItem">
<ListViewItem IsSelected="{Binding IsKeyboardFocusWithin"/>
</DataTemplate>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn>
<TextBox ... Tag="{Binding}".../>
</GridViewColumn>
<GridViewColumn>
<TextBox ... Tag="{Binding}".../>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
该ListView具有内子控件的行GridView列.我想更新ListView.SelectedItem任何行中的任何子控件具有键盘焦点时的绑定属性.如果可以在.xaml文件中完全完成而不必诉诸代码,那将是很棒的.
将您的SelectionMode更改ListBox为Single
如果未设置默认值SelectedItem,则当前代码有效,但是如果设置默认值,SelectedItem则单击第2个项目时不会自动取消选择,因此SelectedItem保持绑定到默认选定项目,直到您将该行设置为焦点为止.再次删除它.
您也可以稍微简化您的XAML.你不需要DataTemplate你的ListBoxItem.Resources,你可以直接SelectedItem在你的<ListBox>标签中设置
<ListView ItemsSource="{Binding Path=Records}" IsSynchronizedWithCurrentItem="True"
SelectedItem="{Binding SelectedRecord}" SelectionMode="Single">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="IsSelected" Value="True"/>
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn>
<TextBox ... Tag="{Binding}".../>
</GridViewColumn>
<GridViewColumn>
<TextBox ... Tag="{Binding}".../>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4071 次 |
| 最近记录: |