这是我的代码:
public void Repaint() {
canvas1.Children.Clear();
ObservableCollection<ClassBox> classes = viewModel.Classes;
foreach (ClassBox j in classes) {
// connect our ui element to the mouse handler if not done already
if (!j.MouseActive) {
j.Box.PreviewMouseLeftButtonUp += Handle_MouseUp;
j.Box.PreviewMouseLeftButtonDown += Handle_MouseDown;
j.Box.PreviewMouseMove += Handle_MouseMove;
j.MouseActive = true;
// Heres should the code be written (something like :)
// j.Box.SetColor(Change_Color(value));
}
canvas1.Children.Add(j.Box);
} }
因此,上面的代码展示了在调用方法时如何重新绘制框。 工作正常,但现在代码的下一部分:
private void Change_ColourBox(object sender, System.Windows.RoutedEventArgs e)
{
var element = sender as FrameworkElement;
ObservableCollection<ClassBox> classes = viewModel.Classes;
foreach (ClassBox j in classes)
{
// connect our ui element to the mouse handler if not done already
if (sender == BoxStandard)
{
j.Box.Background = new SolidColorBrush(Colors.White);
j.Box.Foreground = new SolidColorBrush(Colors.Black);
Repaint();
} }
此代码告诉我们在按下按钮"Change_Color"
时应该更改颜色。
我已经在XAML中实现了按钮,我给它们命名了,在这种情况下是"BoxStandard"
。
下一个代码snipp是我通过事件处理程序生成框的地方。
private void Spawn_Box(object sender, System.Windows.RoutedEventArgs e) {
viewModel.GetURController.AddAndExecute(new AddClassCommand(viewModel));
}
我要把它排成一行:我给他们开始的元素提供了预定义的颜色。当我通过点击事件“Change_Color”更改颜色时,它们会更改为所需的颜色。但是当我然后以预定义的颜色将新元素生成到画布时。我想用改变的颜色来产生它。
问你是否理解我可以解释的问题!