Конвертер никогда не вызывается при привязке к Относительному источнику - PullRequest
0 голосов
/ 07 марта 2012

Моя привязка:

  <StackPanel x:Name="Ancestor">     
      <StackPanel.Resources>      
          <converters:DiceInputToVisualConverter x:Key="MyDiceInputToVisualConverter" />   

          <Style TargetType="{x:Type Ellipse}">
               <Setter Property="Visibility" Value="{Binding Path=/, Converter={StaticResource  MyDiceInputToVisualConverter},FallbackValue=Visible}"></Setter> 
          </Style>  
     <StackPanel.Resources>
     <StackPanel>
           <Canvas DataContext="{Binding Path=DataContext.Dice1,RelativeSource={RelativeSource AncestorType=StackPanel}}">                                           
                <Ellipse Canvas.Left="5" Canvas.Top="5"></Ellipse>
                <Ellipse Canvas.Left="5" Canvas.Top="20"></Ellipse>
           </Canvas>
     </StackPanel>

DataContext:

  Ancestor.DataContext = game ;

преобразователь:

     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
     {
        int dice = int.Parse(value.ToString());
        if (dice == 3)
            return Visibility.Visible;
        return Visibility.Hidden;
     }

мой источник данных:

  public Class Game : INotifyPropertyChanged
  {
     private int dice1;
     public int Dice1
     {
         get { return dice1; }
         set
         {
             dice1 = value;
             if (PropertyChanged != null)
                 PropertyChanged(this, new PropertyChangedEventArgs("Dice1"));
        }
     }
   }

привязка в порядке, когда я проверил это с помощью snoop, DataContext эллипса имел желаемое значение

, новсе-таки конвертер никогда не назывался какими-либо идеями?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Вы уверены, что должны использовать Path=/? Эта запись означает текущий выбранный элемент представления коллекции по умолчанию.

0 голосов
/ 07 марта 2012

Я вижу, вы назвали статический ресурс

StaticResource MyDiceInputToVisualConverter

Где вы объявили этот ресурс. например, в разделе Window.Resources Как показано ниже.

<Window.Resources>
    <!-- Converters that are used on the MainWindow. -->
    <Converters:MyDiceInputToVisualConverter x:Key="MyDiceInputToVisualConverter" />
</Window.Resources>
...