[英]ComboBox IsEnabled Binding Question in Silverlight Xaml
我有一个 ComboBox 其 xaml 如下
<ComboBox Name="ComboBoxDiscussionType" IsEnabled="{Binding ElementName=ComboBoxDiscussionType, Path=Items.Count, Converter={StaticResource ComboBoxItemsCountToBoolConverter}}"/>
转换器获取 Items.Count 并检查它是否大于 0 如果大于 0 然后启用它否则禁用它
目标是启用 ComboBox 如果 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, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
我如何实现它? 现在上面的绑定给了我一个错误
由于我不明白的原因,在 Silverlight 上,转换器看到的value
是double
类型,但应该是int
。 实际上它是 WPF 上的一个int
。
但既然是这种情况,只需将其作为double
处理即可解决问题:
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 有时是一个奇怪的野兽。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.