2013-04-09 65 views
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> 

我有一个名为投注模型,它看起来像这样:

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.

我错过了什么?

+0

它应该是公开课吗? – 2013-04-09 16:49:26

+0

@DJBurb我有另一个类型转换器在同一个.cs文件中,它也是私有的,它工作正常。 – JMK 2013-04-09 16:50:10

+0

你在哪里放置了断点?你确定没有前面的空格等吗?你可以在比较之前试试Trim()吗? – David 2013-04-09 16:50:10

回答

1

这里有什么是数据网格项目来源的投注列表。 如果您仔细考虑

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

datacolumn如何同时显示和折叠。

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

+0

另一个问题是我认为你的类型转换器也需要公开(不确定)。 – DermFrench 2013-04-09 18:59:59