WPF InkCanvas - 无法改变颜色

时间:2016-01-07 14:21:07

标签: c# wpf inkcanvas

绝对荒谬! 我正在尝试通过代码更改inkCanvas的颜色,但它不起作用。我看了很多关于这个的教程,但它们对我不起作用。尽管它们很简单。我是WPF的新手但仍然 - 这应该是一个明智的选择。

*注意:我可以通过XAML设置颜色,但这是一次性操作而不是我想要的。

我的代码:

using System.Windows;
using System.Windows.Controls;
using System.Windows.Ink;
using System.Windows.Media;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        InkCanvas inkCanvas = new InkCanvas();

        public MainWindow()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(SetColor);
        }

        // doesn't work
        private void SetColor(object sender, RoutedEventArgs e)
        {
            inkCanvas.DefaultDrawingAttributes.Color = Colors.Red;
        }
         // doesn't work either
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            inkAttributes.Color = Colors.Blue;
        }
    }
}

编辑:我的XAML是:

<Window...
< InkCanvas Name="inkCanvas" /> ....

1 个答案:

答案 0 :(得分:2)

在您的代码示例中,您在窗口的代码隐藏中定义inkCanvas,但不要将其添加到窗口的可视控件中。

如果您使用XAML指定画布:

<Window x:Class="..."
        ...>
    <InkCanvas x:Name="inkCanvas"/>
</Window>

或在C#中定义它并将其添加到窗口中:

InkCanvas inkCanvas = new InkCanvas();

public MainWindow()
{
    InitializeComponent();
    this.Loaded += (sender, args) =>
    {
        this.AddChild(inkCanvas);
    };
}

然后行inkCanvas.DefaultDrawingAttributes.Color = Colors.Red;实际上有效。