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