0

在这里扯我的头发!我有这个类型转换器:

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。

我错过了什么?

4

1 回答 1

1

您在这里拥有的是数据网格项目源的投注列表。如果你考虑一下

当通过类型转换器传递时,Bet1 可以评估为可见。当通过类型转换器传递时,Bet2 可以评估为可见。当通过类型转换器传递时,Bet3 可以评估为折叠。

数据列如何同时可见和折叠。

你不能像这样绑定到可见性,除非你在列表中有一个整体变量或者它可以绑定到的东西。

于 2013-04-09T17:12:35.683 回答