如何绑定(bind)到在列表 View 中显示并被双击的数据模板?
我想要这样的东西:
<CheckBox Grid.Column="1" Grid.Row="5" Command="{Binding AddItemCommand}"></CheckBox>
我已经完成了所有工作,但是不知道如何将命令绑定(bind)到列表 View 中的数据模板或该数据模板中的网格。
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中的相同。
最佳答案
我建议使用行为来处理双击事件。根据双击时要执行的操作,可能需要向Behavior中添加ICommand
Dependency属性,以便可以绑定(bind)到 View 模型上的命令。
这是类似的帖子:Is there a way in XAML to select all text in textbox when double clicked?
在该示例中,用户在双击时在TextBox中选择文本。
更多的:
您的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>
... ...
关于c# - 如何获取 ListView 数据模板项双击WPF MVVM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16082360/