首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IValueCOnverter不工作

IValueCOnverter不工作
EN

Stack Overflow用户
提问于 2010-02-11 21:53:11
回答 2查看 4.6K关注 0票数 3

我用谷歌搜索这个问题已经好几个小时了,看不出哪里出了问题。

我有下面的转换器,它只返回Brushes.Red(已经尝试过Colors.Red),但仍然没有成功。

代码语言:javascript
复制
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中,我有以下代码:

代码语言:javascript
复制
<StackPanel Orientation="Vertical">
    <TextBlock Text="{Binding Value}" TextAlignment="Center" Foreground="{Binding Path=color, Converter={x:Static local:ColorConverter.Instance}}" Margin="2"/>
</StackPanel>

我在顶部设置了以下名称空间:

代码语言:javascript
复制
xmlns:local="clr-namespace:Dashboard"

现在,我有了以下绑定到堆栈面板的类:

代码语言:javascript
复制
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));
        }
    }
}

数据绑定(值)工作得很好,但是转换器不想启动,我试图在转换程序的Convert方法中设置一个断点,但在调试时没有触发,就好像我的调试器没有被调用一样。

有谁能解释一下这件事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-11 22:02:56

我很惊讶你说绑定本身是有效的,因为"Value“和"color”是字段,绑定到字段是不应该起作用的。

票数 2
EN

Stack Overflow用户

发布于 2010-02-11 22:01:05

好吧,这是我在我的项目中是如何做到的。我修改了我的代码以反映您正在尝试做的事情。我希望它能帮上忙。我不能回答为什么你的单例方法不能工作。

类:

代码语言:javascript
复制
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元素中:

代码语言:javascript
复制
<UserControl.Resources>
    <local:ColorConverter x:Key="MyColorConverter" />
</UserControl.Resources>

StackPanel元素:

代码语言:javascript
复制
<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上有一个特定的部分,也许有一天会对你有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2244816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档