Привязка DataFrigger WPF C # к OnPropertyChanged - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь создать DataTrigger, который меняет стиль границы при каждом изменении определенного свойства. Я создал свойство и вызываю событие PropertyChanged, и оно отлично работает с другими компонентами XAML, но по какой-то причине оно не будет работать с моим DataTrigger.

Файл XAML:

<Style x:Key="InputParameterBorder" TargetType="Border" BasedOn="{StaticResource ParameterBorder}">
        <Setter Property="Background" Value="{StaticResource GrayGradient}"/>
        <Style.Triggers>
            <!-- This changes input color -->
            <DataTrigger Binding="{Binding Parameter, Converter={StaticResource IsNullConverter}}" Value="False">
                <Setter Property="Background" Value="{StaticResource YellowGradient}" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

C # Файл:

    private IInputParameter _parameter;
    public event PropertyChangedEventHandler PropertyChanged;
    public IInputParameter Parameter
    { get
        {
            return _parameter;
        }
        set
        {
            _parameter = value;
            PropertyChanged(this, new PropertyChangedEventArgs("Parameter"));
        }

    }

РЕДАКТИРОВАТЬ: я изменил InputParameter на параметр в методе Binding, но он по-прежнему не работает.

РЕДАКТИРОВАТЬ 2: Добавлен код XAML с реализацией InputParameterBorder.

<DataTemplate x:Key="InputParameterBox">
        <Border Style="{StaticResource InputParameterBorder}" 
                AllowDrop="True" DragEnter="InputParameter_DragEnter" Drop="InputParameter_Drop" 
                MouseLeftButtonDown="InputParameter_MouseLeftButtonDown">
            <Grid>
                <TextBlock Text="{Binding Parameter.Type}" 
                           Style="{StaticResource InputParameterTypeLabel}" />
                <TextBlock Text="{Binding Parameter.Name}"  Style="{StaticResource InputParameterNameLabel}" />
            </Grid>
            <!--TextBlock Text="{Binding Type, Converter={StaticResource WorkflowParameterTypeConverter}}" -->
        </Border>
    </DataTemplate>

И реализация InputParameterBox:

<DataTemplate>
             <ItemsControl  ItemsSource="{Binding InputParameters}"
                     ItemTemplate="{StaticResource InputParameterBox}">
                  <ItemsControl.ItemsPanel>
                           <ItemsPanelTemplate>
                   <WrapPanel Orientation="Horizontal" HorizontalAlignment="Center" MaxWidth="200" />
                           </ItemsPanelTemplate>
                  </ItemsControl.ItemsPanel>
            </ItemsControl>
</DataTemplate>
...