WPF C#DataTrigger绑定到OnPropertyChanged

时间:2018-07-02 07:51:25

标签: c# wpf datatrigger propertychanged

我正在尝试创建一个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"));
        }

    }

编辑:我在Binding方法中将InputParameter更改为Parameter,但仍然无法使用。

编辑2:使用InputParameterBorder的实现添加了XAML代码。

<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>

0 个答案:

没有答案