编写简单的转换器

时间:2017-07-11 08:11:52

标签: c# wpf

我有这个班级:

public class MyData
{
   public static int Total Files;
   public static int Total FilesFinished;
}

我有简单的Progress-Bar以这种方式计算Value

double value = ((double)MyData.FilesFinished / MyData.Files) * 100;

使用简单Label更新我的Timer

Label name="lblPercentage" />

lblPercentage.Content = value;

现在我想使用Converter而不是通过代码更新我的Label

所以我有这个课程(尚未实施):

public class TotalFilesToTotalPercentageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Window.Resource内,我有这个:

<Convertors:TotalFilesToTotalPercentageConverter  x:Key="FilesToPercentageConverter "/>

这就是我在Label中尝试的内容:

 Content="{Binding Converter={StaticResource FilesToPercentageConverter}}"

所以我的问题是我试着看看我的TotalFilesToTotalPercentageConverter类是否通过调试器响应而且似乎没有,没有发生任何事情。

我做错了什么?

更新

我忘了在TotalFilesToTotalPercentageConverter文件夹<{1}}文件夹下的class文件夹下的Converter文件夹内提及我的Utils Classes

1 个答案:

答案 0 :(得分:0)

您需要将Content属性绑定到要调用的Convert方法的source属性。转换器仅适用于数据绑定。

这意味着代替在代码隐藏中设置Content的{​​{1}}属性,而不是:

Label

您应该设置视图模型的源属性,然后将lblPercentage.Content = value; 的{​​{1}}属性绑定到:

Content

将视图的Label设置为视图模型类的实例:

Content="{Binding Path=YourValueProperty, Converter={StaticResource FilesToPercentageConverter}}"

视图模型类需要实现INotifyPropertyChanged并在源属性(DataContext)的setter中引发public MainWindow() { InitializeComponent(); DataContext = new ViewModel(); } 事件。