我使用带有图标的矩形来显示计算的状态。我定义了一个带有数据触发器和绑定“IsCompleted”的样式来处理计算的状态(完成/失败=未完成)。我现在有不止一个计算,并且想使用相同类型的矩形(都具有相同的样式和行为)进行不止一个计算。我知道通常如何为一个矩形设置 IsCompleted 的绑定。
如何在特定矩形后面的代码中设置触发器的绑定(例如,computation1.iconStyle.IsCompleted=true)?这是可能的还是我必须为每个计算定义一种样式(这将是很多额外的代码)?
xml:
<VisualBrush x:Key="NotCompleted" Stretch="Fill" Visual="{StaticResource appbar_error}" />
<VisualBrush x:Key="Completed" Stretch="Fill" Visual="{StaticResource appbar_check}" />
<Style x:Key="iconStyle" TargetType="{x:Type Rectangle}">
<Setter Property="Width" Value="20"/>
<Setter Property="Fill" Value="Red"/>
<Setter Property="Height" Value="20"/>
<Setter Property="Margin" Value="0,0,5,0"/>
<Setter Property="OpacityMask" Value="{StaticResource NotCompleted}" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsCompleted}" Value="True">
<Setter Property="Fill" Value="Green"/>
<Setter Property="OpacityMask" Value ="{StaticResource Completed}"/>
</DataTrigger>
</Style.Triggers>
</Style>
称呼:
<Rectangle Name="computation1" Style="{StaticResource iconStyle}" Grid.Column="0" VerticalAlignment="Top" />
后面的代码:
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
private bool _isCompleted;
public bool IsCompleted
{
get { return _isCompleted; }
set { _isCompleted= value; NotifyPropertyChanged("IsCompleted"); }
}
private bool comp1(){
....
IsCompleted = !IsCompleted;
}
编辑:
示例输出:
组框1:
| -------------------------------------
| 计算 1:(文本块)
| 已完成或未完成的图标(矩形)
| 意思是:(文本块)
| 其他一些东西:
| -------------------------
groupbox2:
| -------------------------------------
| 计算 2:(文本块)
| 已完成或未完成的图标(矩形)
| 图表:(图片)
| 其他一些东西:
| -------------------------