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