Mvvm RaisePropertyChanged不';I don’我不工作
我在使用MVVM Light Toolkit更新UI时遇到了一个非常奇怪的问题。RaisePropertyChanged对于我的ObservableCollection根本不起作用 以下是XAML代码:Mvvm RaisePropertyChanged不';I don’我不工作,mvvm,listbox,mvvm-light,observablecollection,Mvvm,Listbox,Mvvm Light,Observablecollection,我在使用MVVM Light Toolkit更新UI时遇到了一个非常奇怪的问题。RaisePropertyChanged对于我的ObservableCollection根本不起作用 以下是XAML代码: <ListBox x:Name="list" ItemsSource="{Binding ModelList}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"> <ListBox.ItemTemplate&
<ListBox x:Name="list" ItemsSource="{Binding ModelList}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"></TextBlock>
<CheckBox IsChecked="{Binding IsChecked}"></CheckBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<interaction:Interaction.Triggers>
<interaction:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding TempCommand}" CommandParameter="{Binding ElementName=list, Path=SelectedItem}"
PassEventArgsToCommand="True"/>
</interaction:EventTrigger>
</interaction:Interaction.Triggers>
</ListBox>
还有ViewModel代码部分:
private Model _selectedItem;
public Model SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
RaisePropertyChanged("SelectedItem");
}
}
private ObservableCollection<Model> _modelList;
public ObservableCollection<Model> ModelList
{
get { return _modelList; }
set
{
_modelList = value;
RaisePropertyChanged("ModelList");
}
}
public RelayCommand<Model> TempCommand { get; private set; }
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
modelList = new ObservableCollection<Model>()
{
new Model()
{
IsChecked = true,
Name = "Temp1"
},
new Model()
{
IsChecked = false,
Name = "Temp2"
},
new Model()
{
IsChecked = false,
Name = "Temp3"
}
};
ModelList = modelList;
TempCommand = new RelayCommand<Model>(Model_SelectedItem);
}
private void Model_SelectedItem(Model item)
{
// What should I do here?
}
private Model\u selectedItem;
公共模型SelectedItem
{
获取{return\u selectedItem;}
设置
{
_选择editem=值;
RaisePropertyChanged(“SelectedItem”);
}
}
私有ObservableCollection\u模型列表;
公共可观测集合模型列表
{
获取{return\u modelist;}
设置
{
_模型列表=值;
RaisePropertyChanged(“模型列表”);
}
}
public RelayCommand TempCommand{get;private set;}
///
///初始化MainViewModel类的新实例。
///
公共主视图模型()
{
modelList=新的ObservableCollection()
{
新型号()
{
IsChecked=true,
Name=“Temp1”
},
新型号()
{
IsChecked=false,
Name=“Temp2”
},
新型号()
{
IsChecked=false,
Name=“Temp3”
}
};
模型列表=模型列表;
TempCommand=新的RelayCommand(Model_SelectedItem);
}
专用作废模型\u SelectedItem(模型项)
{
//我在这里该怎么办?
}
当我更改模型列表时,ListBox UI没有任何反应
有人能帮我吗?问题解决了
当您在ObservableCollection或List中有自定义类时,它必须从ObservableObject派生,并且所有属性都必须触发RaisePropertyChanged事件。问题已解决。模型类必须从ObservaleObject派生,其属性必须触发RaisePropertyChanged事件。如果您让它工作,那么请尝试删除ObservaleCollection上的RaiseProperty-它不需要它…是的,当然我做了!