我需要写一个值转换器.像这样的东西:
public class HostStatusToDescriptionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value == true ? "?????? ???????: ?????????" : "?????? ???????: ??????????";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return DependencyProperty.UnsetValue;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要在哪里使用MVVM模式?在模型文件夹中?或者创建一个转换器文件夹?
从技术上讲,转换器是View的一部分,因此也是View Logic的一部分.这就是你应该如何对待imho.
BooleanToVisibility是一个很好的例子.在你的ViewModel你只有一个布尔属性(可见或不可见),导致您的视图模型没有你的UI /视图的知识.
例如,在一个UI(例如桌面)中,您可能希望将布尔值"转换"为文本(即"成功"和"失败"),在其他UI(Win8应用程序)中,您可能希望将布尔值转换为支票/十字图标.
这意味着,这个逻辑(检查/交叉或"成功"/"失败")不属于您的ViewModel类,并且严格地非常特定于您的应用程序的UI /视图,因此唯一合理的使用它的地方是View-Project(假设您分别为Model,ViewModel和View设置了至少3个不同的项目).
编辑:BooleanToVisibility从上面扩展我的示例:正如您可以从命名空间中看到的那样System.Windows.Controls.BooleanToVisibilityConverter,控件所在的位置是纯View类.
此外,更重要的是,Converter类特定于WPF,一个特定的UI框架.如果您使用任何其他UI框架,则此类是无用的.因此,它们既不属于Model或ViewModel.视图是将它们放入的唯一合理位置.