在这里扯我的头发!我有这个类型转换器:
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>
我有一个名为 Bet 的模型,它看起来像这样:
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 中,我有一个可观察的 Bet 集合。回到我的用户控件,我有一个堆栈面板,它的数据上下文是前面提到的 Observable Collection。
在堆栈面板中,我有一个 DataGrid,ItemsSource 属性只是{Binding},将绑定推迟到树上。
在我的 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"/>
绑定的另一个元素完美地工作(只要它应该是勾选复选框),但我的类型转换器不是。断点甚至没有被击中。Bet中的 Barcode 属性绝对等于 123456。
我错过了什么?