如何获得列表视图数据模板项双击WPF MVVM
本文关键字:双击 WPF MVVM 何获得 列表 视图 数据 | 更新日期: 2023-09-27 18:09:55
我如何绑定到一个数据模板显示在一个列表视图,并被双击?
我想要这样的东西:
<CheckBox Grid.Column="1" Grid.Row="5" Command="{Binding AddItemCommand}"></CheckBox>
我已经完成了所有的事情,但是不知道如何将命令绑定到listview中的datatemplate或该datatemplate中的Grid。
Datatempalte是这样的:
<DataTemplate x:Key="ServerViewItemTemplate" DataType="ViewModel:ServerViewModel">
<Border BorderBrush="Black" BorderThickness="1" Margin="10">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="ServerId:" FontWeight="Bold"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding ServerId}" FontWeight="Bold"/>
<TextBlock Grid.Column="0" Grid.Row="1" Text="Login:"/>
<TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding Login}" />
<TextBlock Grid.Column="0" Grid.Row="2" Text="Password:"/>
<TextBlock Grid.Column="1" Grid.Row="2" Text="{Binding Password}" />
<TextBlock Grid.Column="0" Grid.Row="3" Text="Type:"/>
<TextBlock Grid.Column="1" Grid.Row="3" Text="{Binding Type}" />
<TextBlock Grid.Column="0" Grid.Row="4" Text="IpAddress:"/>
<TextBlock Grid.Column="1" Grid.Row="4" Text="{Binding IpAddress}" />
<TextBlock Grid.Column="0" Grid.Row="5" Text="Include:"/>
<CheckBox Grid.Column="1" Grid.Row="5" Command="{Binding AddItemCommand}"></CheckBox>
</Grid>
</Border>
</DataTemplate>
因此,如果双击它应该调用iccommand,与CheckBox AddItemCommand相同
我建议使用Behavior来处理双击事件。当你双击时,根据你想要做的事情,你可能需要添加一个ICommand
依赖属性到行为,这样你就可以绑定到视图模型上的命令。
这里有一个类似的帖子:是否有一种方法在XAML中选择文本框中的所有文本时双击?
在这个例子中,当用户双击时,正在选择文本框中的文本。
:
你的XAML看起来像这样:
<DataTemplate x:Key="ServerViewItemTemplate" DataType="ViewModel:ServerViewModel">
<Border BorderBrush="Black" BorderThickness="1" Margin="10">
<Grid>
<e.Interaction.Behaviors>
<local:DoubleClickBehavior Command="{Binding Path=AddItemCommand}"/>
</e.Interaction.Behaviors>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
... ...