我有这个班级:
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
答案 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();
}
事件。