我有一个画布,上面有很多线条,我把它设置成如果我点击一条线,颜色就会改变。我想再次点击这条线,然后把颜色重置为黑色,但是我遇到了一点麻烦。
我尝试过的:
private void Line_MouseDown(object sender, MouseButtonEventArgs e)
{
Color selectionColor = (Color)ColorConverter.ConvertFromString("#FF490AF6");
SolidColorBrush selectionBrush = new SolidColorBrush(selectionColor);
SolidColorBrush blackBrush = new SolidColorBrush();
blackBrush.Color = Colors.Black;
Line line = (Line)sender;
if (line.Stroke == selectionBrush)
{
line.Stroke = blackBrush;
}
else
{
line.Stroke = selectionBrush;
}
}
3条答案
按热度按时间ztyzrc3y1#
当你把画笔和
这将始终是一个与您所期望的不同的画笔,因为您刚刚示例化了一个新画笔。
你应该让它成为一个在所属类中声明的笔刷,在你声明它的时候设置它。
然后用它来设置和比较。
你可以用画笔,黑色的也可以。
axr492tv2#
使用列表框进行选择处理的替代方法
和视图模型代码
线路等级
转换器
行为
pqwbnv8z3#
一个非常简单的解决方案是使用一个定制的附加属性
IsChecked
来保存元素的状态,使用一个Style
来定义一个Trigger
以切换Shape.Stroke
的值。下面的示例使用以所有
Line
元素为目标的隐式Style
。如果您要求每个
Line
具有不同的颜色,则必须创建单独的样式。主窗口.xaml.cs
主窗口.xaml
以下
Style
将应用于作为MainWindow
的可视化树的子级的每个Line
。或者将上面的代码移动到一个简单的附加行为:
形状切换行为.cs
主窗口.xaml