【发布时间】:2020-04-06 23:26:44
【问题描述】:
所以,我正在尝试这里的代码: https://blogs.windows.com/windowsdeveloper/2016/11/22/windows-ink-2-digging-deeper-with-ink-and-pen
这是 XAML 的代码:
<CommandBar Name="myCommandBar" IsOpen="True">
<CommandBar.Content>
<InkToolbar x:Name="myInkToolbar" TargetInkCanvas="{x:Bind myInkCanvas}">
<InkToolbarBallpointPenButton Name="penButton" />
<InkToolbarCustomPenButton Name="markerButton" CustomPen="{StaticResource MarkerPen}" Palette="{x:Bind penButton.Palette}" >
<SymbolIcon Symbol="Highlight" />
<InkToolbarCustomPenButton.ConfigurationContent>
<InkToolbarPenConfigurationControl />
</InkToolbarCustomPenButton.ConfigurationContent>
</InkToolbarCustomPenButton>
</InkToolbar>
</CommandBar.Content>
</CommandBar>
但是当我点击调色板时,它只显示黑白。但是,当我在单击按钮时将此markerButton.Palette = penButton.Palette 放入代码隐藏中时,所有颜色都会显示。但是,如果我在 MainPage() 构造函数上这样做,它就不起作用。
调试时,它会将penButton.Palette 显示为null,但仅在构造函数中,在button_click 方法中,它才有效。
那么,什么给了?如何将InkToolbarCustomPenButton Palette 绑定到InkToolbarBallpointPenButton Palette?
这是我的代码隐藏文件:
public MainPage()
{
this.InitializeComponent();
Debug.Write(penButton.Palette.Count); // this doesn't write anything and produces palette as null
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Debug.Write(penButton.Palette.Count); // this produces 30
markerButton.Palette = penButton.Palette;
}
编辑:这是重现相同问题的测试样本的链接: https://github.com/dydx-git/Ink2Demo
【问题讨论】:
-
你需要在
this.InitializeComponent(); in the MainPage constructor. BecauseInitializeComponent`方法用于初始化xaml组件之后获取penButton.Palette。 -
这正是我正在做的。
-
您能帮我们分享一下小样测试吗?
-
当然!刚刚编辑了帖子
-
嗨,我检查了您的代码并解决了问题,请检查以下内容。