WPF中用MVVM绑定ContentControl界面无变化
在WPF中使用MVVM绑定ContentControl,调试的时候Query和Refund方法都是进的去的,问题就在
ViewModel = _vMQueryPayListCtrl这些东西都无效,界面没有变化,仔细对比了别人的demo,也没找到问题。
VMMainWindow中继承了INotifyPropertyChanged,由于代码较多,只贴了主要部分代码。
xaml部分
VM部分
ViewModel = _vMQueryPayListCtrl这些东西都无效,界面没有变化,仔细对比了别人的demo,也没找到问题。
VMMainWindow中继承了INotifyPropertyChanged,由于代码较多,只贴了主要部分代码。
xaml部分
<Window.Resources>
<v:VMMainWindow x:Key="MainViewModel" />
<DataTemplate DataType="{x:Type v:VMNumberArea}">
<c:NumberArea />
</DataTemplate>
<DataTemplate DataType="{x:Type v:VMQueryPayListCtrl}">
<c:QueryPayListCtrl/>
</DataTemplate>
<DataTemplate DataType="{x:Type v:VMRefundCtrl}">
<c:RefundCtrl/>
</DataTemplate>
</Window.Resources>
<Grid DataContext="{StaticResource MainViewModel}">
<ContentControl x:Name="workArea" Background="White" Content="{Binding ViewModel}" HorizontalAlignment="Left" Height="{Binding Wheight}" Width="850" Grid.Row="2" VerticalAlignment="Top"/>
<UserCtrl:ShadeCtrl Tag="查询" HorizontalAlignment="Left" Grid.Row="0" VerticalAlignment="Top" Height="85" Margin="131,0,0,0" Width="58">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<i:InvokeCommandAction Command="{Binding TextBlockCommand}" CommandParameter="查询" />
</i:EventTrigger>
</i:Interaction.Triggers>
</UserCtrl:ShadeCtrl>
<UserCtrl:ShadeCtrl Tag="退款" HorizontalAlignment="Left" Grid.Row="0" VerticalAlignment="Top" Height="85" Margin="63,0,0,0" Width="68" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<i:InvokeCommandAction Command="{Binding TextBlockCommand}" CommandParameter="退款" />
</i:EventTrigger>
</i:Interaction.Triggers>
</UserCtrl:ShadeCtrl>
VM部分
private readonly VMNumberArea _vMNumberArea = new VMNumberArea();
private readonly VMQueryPayListCtrl _vMQueryPayListCtrl = new VMQueryPayListCtrl();
private readonly VMRefundCtrl _vMRefundCtrl = new VMRefundCtrl();
private object _viewModel;
public object ViewModel
{
get { return _viewModel; }
set
{
if (_viewModel == value)
{
return;
}
_viewModel = value;
OnPropertyChanged("ViewModel");
}
}
public DelegateCommand TextBlockCommand { get; set; }
public VMMainWindow()
{
this.TextBlockCommand = new DelegateCommand();
this.TextBlockCommand.ExecuteAction = new Action<object>(ShowTextBlock);
}
private void ShowTextBlock(object obj)
{
switch (obj.ToString())
{
case "收款":
Receivables();
break;
case "退款":
Refund();
break;
case "查询":
Query();
break;
case "统计":
Statistics();
break;
case "解绑":
Untying();
break;
case "设置":
Setup();
break;
case "账户":
Account();
break;
case "退出":
default:
Closed?.Invoke();
break;
}
}
private void Query()
{
Height = new GridLength(0);
Wheight = 475;
ViewModel = _vMQueryPayListCtrl;
}
private void Refund()
{
ViewModel = new VMRefundCtrl();
}
...全文
相关推荐
Wpf中用TabControl做的分页选项卡界面
Wpf中用TabControl做的分页选项卡界面,如果准备打开的子窗口在主界面中没有则打开,有则激活到当前页。
WPF侧边导航UI框架自研实践:从MVVM到数据驱动与动画实现
在桌面应用开发中,导航栏是管理后台与工具型软件的常见交互骨架。WPF作为微软推出的GUI框架,凭借灵活的控件模板与强大的数据绑定机制,被广泛用于构建复杂业务界面。其核心原理在于将界面呈现与业务逻辑解耦,通过依赖属性、命令和DataTemplate完成视图与视图模型的自动关联,从而提升代码可维护性与复用性。技术价值上,基于MVVM模式搭建导航框架,可实现菜单结构动态配置、页面生命周期管理及主题样式定制,尤其适合需要多级菜单、权限控制与折叠动画的企业级应用。实际开发中,开发者常面临第三方UI库定制成本高、事件订
WPF 超炫界面模板
ModernUI.1.0.4.win8极简化界面设计.用户可以基于ModernUI来构造一个非常通用的、插件化的WPF开发框架,有兴趣的朋友可以下载使用!
C# 实现多界面之间切换(WPF)multiWindows.zip
WPF 实现多界面切换
WPF通过UserControl动态生成向导示例
WPF的向导示例,是通过UserControl动态加载至主页面,从而使每个向导中的页面可以单独开发。


