谷歌搜索了这个问题好几个小时,看不出我哪里出错了。
我有以下转换器,它只返回Brushes.Red(已尝试过Colors.Red),但仍然没有运气。
public class ColorConverter : IValueConverter
{
private static ColorConverter instance = new ColorConverter();
public static ColorConverter Instance
{
get
{
return instance;
}
}
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return Brushes.Red;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new Exception("The method or operation is not implemented.");
}
}
现在我的xaml中有以下代码:
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Value}" TextAlignment="Center" Foreground="{Binding Path=color, Converter={x:Static local:ColorConverter.Instance}}" Margin="2"/>
</StackPanel>
我在顶部设置了以下命名空间:
xmlns:local="clr-namespace:Dashboard"
现在我将以下类绑定到堆栈面板:
public class MyClass : INotifyPropertyChanged
{
public String Value;
public Color color;
// Declare the PropertyChanged event
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
数据绑定(Value)工作得非常好,但转换器不想启动,我试图在covnerter的Convert方法中设置断点,但是在调试时不会触发,它只是看起来像如果没有调用我的调试器。
任何人都可以对此有所了解吗?
答案 0 :(得分:2)
我很惊讶您说绑定本身有效,因为“值”和“颜色”是字段,并且对字段的绑定不起作用。
答案 1 :(得分:1)
嗯,这就是我在项目中的表现。我修改了我的代码以反映你想要做的事情。我希望它有所帮助。我无法回答为什么你的单身方法不起作用。
类别:
public class ColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return Brushes.Red;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new Exception("The method or operation is not implemented.");
}
}
在我的UserControl.Resources元素中:
<UserControl.Resources>
<local:ColorConverter x:Key="MyColorConverter" />
</UserControl.Resources>
StackPanel元素:
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Value}" TextAlignment="Center" Foreground="{Binding Path=color, Converter={StaticResource MyColorConverter}}" Margin="2"/>
</StackPanel>
另外,您是否检查了“输出”窗口以查看是否有任何错误?您还应该阅读Bea Stollnitz's article on debugging databindings。她实际上有一个关于IValueConverters的特定部分,有一天可能会派上用场。