如何绑定到列表视图中显示并被双击的数据窗口?
我想要这样的东西:
<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>
因此,如果双击它,它应该调用ICommand,与CheckBox AddItemCommand中的相同。
答案 0 :(得分:1)
我建议使用一个行为来处理双击事件。根据双击时要执行的操作,可能需要向行为添加ICommand
依赖项属性,以便绑定到viewmodel上的命令。
这是一篇类似的帖子:Is there a way in XAML to select all text in textbox when double clicked?
在该示例中,用户在双击时选择TextBox中的文本。
MORE:
您的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>
... ...