【发布时间】:2018-12-28 04:15:40
【问题描述】:
我正在为 WPF 应用程序使用 MVVM 模式(入门)
我在模型的类Train.cs 中定义了一个名为TrainDirection 的属性:
public enum TrainDirection
{
Unknown,
None,
Left,
Right
}
在视图中,我想根据枚举的值显示/隐藏代表trainObject 的symbol。
我创建了一个“用户控件”:
<Grid >
<Path x:Name="TrainToRight" Data="M80,160L220,160 270,190 220,220 80,220" Stretch="Fill" StrokeThickness="2" Opacity="0.9"
</Path>
<Path x:Name="TrainToLeft" Data="M130,160L260,160 260,220 130,220 80,190z" Stretch="Fill" StrokeThickness="2" Opacity="0.9"
</Path>
</Grid>
我想我需要 trainDirectionToVisibilityConverter 之类的东西来将可见性属性绑定到 TrainDirection 以便根据方向显示/隐藏正确的符号。
我想以这种方式实现转换器:
class TrainDirectionToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var direction = (TrainDirection)value;
switch (direction)
{
case TrainDirection.Unknown:
return Application.Current.FindResource("TrainDirectionUnknown");
case TrainDirection.None:
return Application.Current.FindResource("TrainDirectionNone");
case TrainDirection.Left:
return Application.Current.FindResource("TrainDirectionLeft");
case TrainDirection.Right:
return Application.Current.FindResource("TrainDirectionRight");
default: throw new ArgumentException($"Unsupported TranDirection value: {direction}");
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
还有一个 ResourceDictionary,其中为 App 定义了自定义样式。
我怎样才能实现这个绑定?
一些解释会很有帮助,因为我刚刚开始使用 c# 和 WPF 编程
【问题讨论】: