有人可以告诉我为什么我不能再次更改页面?
例如,当我点击登录时,应用程序可以更改页面,即显示主面板,但是如果用户单击另一个按钮打开另一个面板则没有任何反应。
主窗口
<Window x:Class="Smart.Interface.View.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:view="clr-namespace:Smart.Interface.View"
xmlns:ViewModel="clr-namespace:Smart.Interface.ViewModel"
Title="MainWindow" Height="768" Width="1024"
DataContext="{Binding Login,
Source={StaticResource Locator}}"
ResizeMode="NoResize">
<Grid Background="#FFE6E7E8">
<Rectangle Panel.ZIndex="0" Name="RetanguloTop" Fill="Black" HorizontalAlignment="Left" Height="35" Stroke="Black" VerticalAlignment="Top" Width="1024"/>
<Rectangle Name="RetanguloFooter" Fill="Black" HorizontalAlignment="Left" Height="35" Margin="0,703,0,0" Stroke="Black" VerticalAlignment="Top" Width="1024"/>
<ContentControl Content="{Binding CurrentViewModel}" />
</Grid>
</Window>
第一个动作完美无缺 - &gt; CurrentViewModel = new PainelDeOpcoesViewModel();
但在视图PainelDeOpcoesView
中,我无法再访问任何其他视图,也可以使用同样的想法。
CurrentViewModel = new GerenciarUsuariosViewModel();
&lt; - 它不起作用
private ViewModelBase _currentViewModel;
public ViewModelBase CurrentViewModel
{
get
{
return _currentViewModel;
}
set
{
if (_currentViewModel == value)
return;
_currentViewModel = value;
RaisePropertyChanged("CurrentViewModel");
}
}
我的app.xaml
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
<DataTemplate DataType="{x:Type vm:LoginViewModel}">
<views:LoginView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:PainelDeOpcoesViewModel}">
<views:PainelDeOpcoesView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:GerenciarUsuariosViewModel}">
<views:GerenciarUsuariosView />
</DataTemplate>
答案 0 :(得分:0)
缺少一些位,但猜测是CurrentViewModel需要引发一个PropertyChanged通知(实现INotifyPropertyChanged):
public object CurrentViewModel {
get { return _currentViewModel; }
set {
_currentViewModel = value;
OnPropertyChanged("CurrentViewModel"); //Ensure you have this or are binding to a DependencyProperty
}
}
如果没有解决问题,请提供您的财产的代码。
答案 1 :(得分:0)
您可以通过创建数据模板来获得所需的结果,其中 Viewmodel 充当键,查看作为其各自的值。 只需将上面的DataTemplate添加到您的xaml
即可<Window.Resources>
<DataTemplate DataType="{x:Type DataTemplates:PainelDeOpcoesViewModel}">
<DataTemplates:PainelDeOpcoesView></DataTemplates:PainelDeOpcoesView>
</DataTemplate>
<DataTemplate DataType="{x:Type DataTemplates:GerenciarUsuariosViewModel}">
<DataTemplates:GerenciarUsuariosView></DataTemplates:GerenciarUsuariosView>
</DataTemplate>
点击按钮
CurrentViewModel = new PainelDeOpcoesViewModel();
OR
CurrentViewModel = new GerenciarUsuariosViewModel();