微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight Xaml中的ComboBox IsEnabled绑定问题

如何解决Silverlight Xaml中的ComboBox IsEnabled绑定问题

|| 我有一个ComboBox,其xaml如下
<ComboBox Name=\"ComboBoxdiscussionType\" IsEnabled=\"{Binding ElementName=ComboBoxdiscussionType,Path=Items.Count,Converter={StaticResource ComboBoxItemsCountToBoolConverter}}\"/>
转换器获取Items.Count并检查其大于0是否大于0,然后启用它,否则禁用它 目标是仅在ComboBox中包含Items时启用ComboBox,否则将其禁用, (自动绑定到其item.count) 以下是我的转换器,
public class ComboBoxItemsCountToBoolConverter : IValueConverter
{
    public object Convert(object value,Type targettype,object parameter,CultureInfo culture)
    {
        return (int)value > 0;
    }
    public object ConvertBack(object value,CultureInfo culture)
    {
        return null;
    }
}
我该如何实现?现在上面的绑定给我一个错误     

解决方法

        出于我不了解的原因,在Silverlight上,转换器看到的ѭ2属于
double
类型,但应为
int
。实际上,它在WPF上为ѭ4。 但是既然是这种情况,只需将其处理为“ 3”即可解决问题:
public object Convert(object value,Type targetType,object parameter,CultureInfo culture)
{
    return (int)(double)value > 0;
}
奇怪的是,更传统的相对源绑定也不起作用:
<Binding RelativeSource=\"{RelativeSource Self}\" .../>
但是您的原始元素名称绑定会:
<ComboBox Name=\"ComboBoxDiscussionType\" IsEnabled=\"{Binding ElementName=ComboBoxDiscussionType,Path=Items.Count,Converter={StaticResource ComboBoxItemsCountToBoolConverter}}\"/>
对我来说,这似乎有些小毛病,但Silverlight有时是一种奇怪的野兽。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。