Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 从viewmodel代码查看时wpf mvvm上次使用的列表框_List_Mvvm_Treeview_Viewmodel - Fatal编程技术网

List 从viewmodel代码查看时wpf mvvm上次使用的列表框

List 从viewmodel代码查看时wpf mvvm上次使用的列表框,list,mvvm,treeview,viewmodel,List,Mvvm,Treeview,Viewmodel,在WPF中使用MVVM架构。是否可以从ViewModel确定相应视图上最后使用的列表框 我有两个列表框和一个树状视图。列表框包含不同类型的列表,我想使用它们在TreeView中创建复合数据 我希望有一个版本,我可以在两个列表框和TreeView之间进行选择,因为我也有TreeView的操作 谢谢你的帮助 为了简单起见,您可以在viewmodel中引入任何标志,当指定的ListBox的SelectedItem更改时,该标志将打开/关闭。 差不多 private bool_IsfirstBoxwas

在WPF中使用MVVM架构。是否可以从ViewModel确定相应视图上最后使用的列表框

我有两个列表框和一个树状视图。列表框包含不同类型的列表,我想使用它们在TreeView中创建复合数据


我希望有一个版本,我可以在两个列表框和TreeView之间进行选择,因为我也有TreeView的操作


谢谢你的帮助

为了简单起见,您可以在viewmodel中引入任何标志,当指定的ListBox的SelectedItem更改时,该标志将打开/关闭。 差不多

private bool_IsfirstBoxwas LastChanged

object FirstListSelectedItem
{
     get { return _fSelectedItem;}
    set {
         _fSelectedItem = value;
         _isFirstBoxWasLastChanged = true;
         RaisePropertyChanged("FirstListSelectedItem");
        }
}

object SecondListSelectedItem
{
     get { return _sSelectedItem;}
    set {
         _sSelectedItem = value;
         _isFirstBoxWasLastChanged = false;
         RaisePropertyChanged("SecondListSelectedItem");
        }
}

ofc。如果您对SelectecItem属性使用绑定,这将是可行的。

您可以检查所选更改以查看谁是最后一个列表框

<StackPanel>
    <ListBox ItemsSource="{Binding lstItens}" SelectedItem="{Binding itemSelected}" />
    <ListBox ItemsSource="{Binding lstItensTwo}" SelectedItem="{Binding itemSelectedTwo}" />
</StackPanel>

您能定义或扩展“上次使用”的含义吗?你是说添加到的最后一个列表框,最后一个单击的列表框,等等?我希望有一个版本,我可以在两个列表框和树视图之间进行选择,因为我也有树视图的操作。Dmitry的答案可以很容易地修改以适应树视图。也许你应该试试?
class ViewModel : INotifyPropertyChanged
{
    private string vmFlagType;
    public string VmFlagType
    {
        get { return vmFlagType; }
        set
        {
            vmFlagType = value;
            OnPropertyChanged("VmFlagType");
        }
    }


    private ObservableCollection<string> lstItens;
    public ObservableCollection<string> LstItens
    {
        get { return lstItens; }
        set
        {
            lstItens = value;
            OnPropertyChanged("LstItens");
        }
    }

    private ObservableCollection<string> lstItensTwo;
    public ObservableCollection<string> LstItensTwo
    {
        get { return lstItensTwo; }
        set
        {
            lstItensTwo = value;
            OnPropertyChanged("LstItensTwo");
        }
    }

    private string itemSelected;
    public string ItemSelected
    {
        get { return itemSelected; }
        set
        {
            itemSelected = value;
            VmFlagType = flagTypes.ListOne;
            OnPropertyChanged("ItemSelected");
        }
    }

    private string itemSelectedTwo;
    public string ItemSelectedTwo
    {
        get { return itemSelectedTwo; }
        set
        {
            itemSelectedTwo = value;
            VmFlagType = flagTypes.ListTwo;
            OnPropertyChanged("ItemSelectedTwo");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }

}
public class flagTypes
{
    public const string ListOne = "ListOne";
    public const string ListTwo = "ListTwo";
}