这是一个可以轻松解决的问题。我的问题是如何以正确的方式遵循MVVM模式来解决它。
模型(M)很简单: 分析机器的音频系统(单声道或立体声)。 将此数据传递给VM 将所有(左/右或单声道)通道的音量级别传递给VM 从用户那里得到所选通道
因此,VM也非常简单。它具有以下布尔属性: 如果是单声道系统,则IsMono为true,如果是立体声则为false。 IsLeft-仅适用于立体声 此外,还有3个整数属性:RightLevel、LeftLevel和MonoLevel
视图(V)将如下所示(对于立体声): 现在,如果系统是单声道,则不应显示音频通道框架框,并且音频级别框架框应显示单行,标记为“Mono”。级别计量器的源将是MonoLevel。 逻辑似乎很简单,但我应该把它实现在哪里?我需要将“音频通道”框架框和其他控件的IsVisible绑定到“not IsMono”,将单声道级别计量器绑定到“IsMono”。还需要添加其他(简单)逻辑,例如正确的标签和图标。
我应该使用Convertors作为我的主要工具吗?转换器被认为是View(V)或VM的一部分吗?我应该在XAML中为Mono和Stereo创建单独的视图,然后只显示所选的视图吗?是否好主意扩展VM以包括IsStereo(仅为NOT IsMono)和其他冗余以简化XAML?
模型(M)很简单: 分析机器的音频系统(单声道或立体声)。 将此数据传递给VM 将所有(左/右或单声道)通道的音量级别传递给VM 从用户那里得到所选通道
因此,VM也非常简单。它具有以下布尔属性: 如果是单声道系统,则IsMono为true,如果是立体声则为false。 IsLeft-仅适用于立体声 此外,还有3个整数属性:RightLevel、LeftLevel和MonoLevel
视图(V)将如下所示(对于立体声): 现在,如果系统是单声道,则不应显示音频通道框架框,并且音频级别框架框应显示单行,标记为“Mono”。级别计量器的源将是MonoLevel。 逻辑似乎很简单,但我应该把它实现在哪里?我需要将“音频通道”框架框和其他控件的IsVisible绑定到“not IsMono”,将单声道级别计量器绑定到“IsMono”。还需要添加其他(简单)逻辑,例如正确的标签和图标。
我应该使用Convertors作为我的主要工具吗?转换器被认为是View(V)或VM的一部分吗?我应该在XAML中为Mono和Stereo创建单独的视图,然后只显示所选的视图吗?是否好主意扩展VM以包括IsStereo(仅为NOT IsMono)和其他冗余以简化XAML?