我需要将视图中的值传递给仍然保留mvvm的视图模型。让我解释一下这个问题。
<UserControl x:Class="SelectorView" ...>
<ListView Name="gridListView" ItemsSource="{Binding... }">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Focusable" Value="false"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Border>
<StackPanel Orientation="Vertical">
<Label x:Name="vLabel" Content="{Binding VCValue}"/>
<ListView Name="checkBoxListView" ItemsSource="{Binding CList}">
<ListView.ItemTemplate>
<DataTemplate>
<CheckBox Command="{Binding DataContext.OnCheckedCommand,RelativeSource={RelativeSource Mode=Self}}" Margin="5" Click="CheckBox_Click" IsChecked="{Binding SelectedValue, Mode=TwoWay}" Content="{Binding Current, Mode=OneWay }"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</UserControl>
在上面的代码中,当用户选中/取消选中复选框时,我需要发送复选框的值(内容)以及vLabel的值从视图到视图模型。两者都在嵌套的数据模板中。之前我使用visualtreehelper来检索相同但我需要以mvvm格式更多地执行此操作。因此,想知道它是否可以使用Command绑定以及如何?在复选框中,我绑定到OnCheckedCommand,但似乎没有在check / uncheck上调用OnCheckedExecuted()。 那么,如何在check / uncheck上获取checkbox和vLabel的内容?
public class MainViewModel
{
public DelegateCommand<object> OnCheckedCommand { get; private set; }
public MainViewModel()
{
OnCheckedCommand = new DelegateCommand<object>(OnCheckedExecuted, CanCheck);
}
private void OnCheckedExecuted(object parameter)
{
}
private bool CanCheck(object parameter)
{
return true;
}
}
感谢任何帮助!