2013-04-09 66 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