我的头发在这里撕裂!我有这种类型的转换器:为什么我的型号转换器不能正常工作
class CouponBarcodeToVisibilityConverterColumn : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (DesignerProperties.IsInDesignMode)
{
if ((string)parameter == "123456")
{
return Visibility.Visible;
}
return Visibility.Hidden;
}
if (value == null)
{
return Visibility.Visible;
}
var barcodesWanted = ((string)parameter).Split(System.Convert.ToChar("_"));
var actualBarcode = (string)value;
return barcodesWanted.Any(barcodeWanted => barcodeWanted == actualBarcode) ? Visibility.Visible : Visibility.Hidden;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
我有以下的参考资料部分用户控件:
<UserControl.Resources>
<converters:CouponBarcodeToVisibilityConverterColumn x:Key="CouponBarcodeToVisibilityConverter1"/>
</UserControl.Resources>
我有一个名为投注模型,它看起来像这样:
public class Bet : INotifyPropertyChanged
{
//Lots of other stuff
private string _barcode;
public string Barcode
{
get { return _barcode; }
set
{
if (value == _barcode) return;
_barcode = value;
OnPropertyChanged("Barcode");
}
}
//Lots of other stuff
}
在我的用户控件的DataContext的ViewModel中,我有一个Observable Collection of Bet。回到我的用户控件,我有一个堆栈面板,其数据上下文是前面提到的Observable Collection。
堆栈面板内部我有一个DataGrid,ItemsSource属性只是{绑定},推迟树的绑定原样。
里面我的DataGrid我有此列:
<DataGridCheckBoxColumn x:Name="IsEwColumn" Binding="{Binding Wagers[0].IsEw,UpdateSourceTrigger=PropertyChanged}" Header="Each Way" Visibility="{Binding Path=Barcode, Converter={StaticResource CouponBarcodeToVisibilityConverter1}, ConverterParameter=123456}" Width="Auto"/>
结合的作品完美的其它元素(每当它被认为是该复选框被选中),但我喜欢的类型转换器是没有的。断点甚至没有被击中。 里面的条码属性下注绝对等于123456.
我错过了什么?
它应该是公开课吗? – 2013-04-09 16:49:26
@DJBurb我有另一个类型转换器在同一个.cs文件中,它也是私有的,它工作正常。 – JMK 2013-04-09 16:50:10
你在哪里放置了断点?你确定没有前面的空格等吗?你可以在比较之前试试Trim()吗? – David 2013-04-09 16:50:10