嵌套数据模板中的命令绑定+ wpf + mvvm

时间:2018-03-03 01:27:52

标签: c# wpf mvvm

我需要将视图中的值传递给仍然保留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;
    }

}

感谢任何帮助!

0 个答案:

没有答案