我想為每個灌裝機制作狀態指示器。當灌裝機處于停止模式時,它會將顏色更改為紅色,但當灌裝機運行時,它將變為綠色。對于每一行,我們有兩個填充符,所以我嘗試使用 datatrigger 進行設定,但現在不知道如何為兩個邊框編程 trigger/s,因為它們使用相同的屬性。
灌裝機處于停止模式灌裝機 1 正在運行。
<DataTrigger Binding="{Binding LineStatus}" Value="True">
<Setter Property="BorderBrush" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding LineStatus2}" Value="True">
<Setter Property="BorderBrush" Value="Red"/>
</DataTrigger>
邊框代碼
<StackPanel Orientation="Horizontal" >
<Border
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="4"
CornerRadius="5,0,0,5"
Width="40"
/>
<Border
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="4"
CornerRadius="0,5,5,0"
Width="40"
/>
</StackPanel>
uj5u.com熱心網友回復:
我認為這就是你想要達到的目標。
<StackPanel Orientation="Horizontal">
<Border BorderThickness="4"
CornerRadius="5 0 0 5"
Width="40">
<Border.Style>
<Style TargetType="Border">
<!-- "Put your default color here." -->
<Setter Property="BorderBrush" Value="Orange" />
<Style.Triggers>
<DataTrigger Binding="{Binding LineStatus,
UpdateSourceTrigger=PropertyChanged,
FallbackValue='False'}"
Value="True">
<!-- "Color to change to when LineStatus = True ." -->
<Setter Property="BorderBrush" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
<Border BorderThickness="4"
CornerRadius="5 0 0 5"
Width="40">
<Border.Style>
<Style TargetType="Border">
<!-- "Put your default color here" -->
<Setter Property="BorderBrush" Value="Orange" />
<Style.Triggers>
<DataTrigger Binding="{Binging LineStatus1,
UpdateSourceTrigger=PropertyChanged,
FallbackValue='False'}"
Value="True">
<!-- "Color to change to when LineStatus1 = True ." -->
<Setter Property="BorderBrush" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</StackPanel>
當 LineStatus 和 LineStatus1 的值發生變化時,后面的代碼將需要實作 INotifyPropertyChanged 以更新 UI。
public partial class MainWindow : Window, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string propertyname = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyname));
}
private bool _lineStatus = false;
public bool LineStatus
{
get { return _lineStatus; }
set
{
_lineStatus = value;
OnPropertyChanged();
}
}
private bool _lineStatus1 = false;
public bool LineStatus1
{
get { return _lineStatus1; }
set
{
_lineStatus1 = value;
OnPropertyChanged();
}
}
public MainWindow()
{
InitializeComponent();
LineStatus = false;
LineStatus1 = true;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/352601.html
上一篇:在滑鼠懸停時更改按鈕FontWeight和/或FontStyle
下一篇:web面試篇-js
