所以,我从这里尝试代码: 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
将 InkToolbarCustomPenButton Pallete 绑定到 InkToolbarBallpointPenButton 不会添加颜色。
问题是你用x:bind来获取penButton的Palette
(延迟加载(,但x:bind的默认模型是一次性的。要解决此问题,请 从构造中删除markerButton.Palette = penButton.Palette
此行MainPage
并编辑 XAML,如下所示。
<InkToolbarCustomPenButton Name="markerButton" CustomPen="{StaticResource MarkerPen}" Palette="{x:Bind penButton.Palette,Mode=OneWay}" >
<SymbolIcon Symbol="Highlight" />
<InkToolbarCustomPenButton.ConfigurationContent>
<InkToolbarPenConfigurationControl />
</InkToolbarCustomPenButton.ConfigurationContent>
</InkToolbarCustomPenButton>