【问题标题】:Binding InkToolbarCustomPenButton Pallete to InkToolbarBallpointPenButton doesn't add colors将 InkToolbar CustomPenButton Palette 绑定到 InkToolbarBallpointPen Button 不会添加颜色
【发布时间】: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. Because InitializeComponent`方法用于初始化xaml组件之后获取penButton.Palette
  • 这正是我正在做的。
  • 您能帮我们分享一下小样测试吗?
  • 当然!刚刚编辑了帖子
  • 嗨,我检查了您的代码并解决了问题,请检查以下内容。

标签: c# .net uwp uwp-xaml


【解决方案1】:

将 InkToolbarCustomPenButton Pallete 绑定到 InkToolbarBallpointPenButton 不会添加颜色。

问题是你使用 x:bind 来获取 penButton 的Palette(lazy load),但是 x:bind 的默认模型是一次。为了解决这个问题,请 从MainPage 构造中删除markerButton.Palette = penButton.Palette 这一行并编辑您的xaml,如下所示。

<InkToolbarCustomPenButton Name="markerButton" CustomPen="{StaticResource MarkerPen}" Palette="{x:Bind penButton.Palette,Mode=OneWay}" >
    <SymbolIcon Symbol="Highlight" />
    <InkToolbarCustomPenButton.ConfigurationContent>
        <InkToolbarPenConfigurationControl />
    </InkToolbarCustomPenButton.ConfigurationContent>
</InkToolbarCustomPenButton>

【讨论】:

  • 这很明显。谢谢!
猜你喜欢
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多