我寫了這個 C# 代碼來測驗一些事情。它現在所做的就是為螢屏上的矩形分配顏色:
var tmp = FillSquare();
A.Fill = (Brush)tmp;
B.Fill = (Brush)tmp;
C.Fill = (Brush)tmp;
D.Fill = (Brush)tmp;
E.Fill = (Brush)tmp;
F.Fill = (Brush)tmp;
這有效。
我有沒有辦法更優雅地寫這個,例如 foreach 回圈,它為每個矩形分配顏色?
我不確定這是否重要,但我將矩形放在畫布上,而不是網格上。
uj5u.com熱心網友回復:
是的,您可以像您建議的那樣使用 foreach 回圈更優雅地執行此操作。通過使用以下命令遍歷Rectangle畫布上的每一個OfType<Rectangle>():
var tmp = FillSquare();
foreach (Rectangle rect in LogicalTreeHelper.GetChildren(yourCanvasName).OfType<Rectangle>())
{
rect.Fill = (Brush)tmp;
}
uj5u.com熱心網友回復:
好吧,如果你真的想要 WPF 中的優雅方式 - 我認為你應該堅持 MVVM 模式并在 ViewModel 中宣告一個屬性:
private Brush _myBrush;
public Brush MyBrush
{
get => _myBrush;
set
{
if (value != _myBrush)
{
_myBrush = value;
PropertyChanged?.Invoke(this, nameof(MyBrush));
}
}
}
然后只需將您的形狀顏色系結到 XAML 中的此屬性:
<Shape Fill="{Binding MyBrush}"/>
一旦MyBrush更改了 的值- 形狀填充顏色將自動更新。
您可能還想將它們放入單獨的 WPF 控制元件中,以隔離額外的邏輯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/359041.html
