首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于John Myczek类的水印

基于John Myczek类的水印
EN

Stack Overflow用户
提问于 2011-03-22 20:20:07
回答 1查看 2K关注 0票数 3

嘿,我试着实现一个班级约翰做的Watermark

我被困住了,想知道是否有人能帮我.在wpf中添加了上述两个类:

代码语言:javascript
复制
<AdornerDecorator>
        <ComboBox Height="23" HorizontalAlignment="Right" Margin="0,184,664,0" x:Name="cbVideoDevices" VerticalAlignment="Top" Width="316" Initialized="cbVideoDevices_Initialized" SelectionChanged="cbVideoDevices_SelectionChanged">
            <Controls:WatermarkService.Watermark>
                <TextBlock>Type here to search text</TextBlock>
            </Controls:WatermarkService.Watermark>
        </ComboBox>
    </AdornerDecorator>

无论我尝试什么,我都会得到错误,因为Control不存在,或者属性不退出。我在他的课堂上没有错误,所以我认为参考资料是好的,但在我看来,System.Windows.Control缺失了.但我找不到它来添加它..。

任何帮助,非常感谢。

编辑:在Liz的帮助下,我让它发挥作用,但让任何人知道,谁确实使用这个。

  • AdornerDecorator在所有东西上创建一个盒子.
  • 为AdornerDecorator创建边距并将其移动到所需的AdornerDecorator并与水印显示的位置对齐.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-22 23:48:16

我试过这个例子,它对我有用。

然而,我确实注意到以下几点:

这些类没有指定名称空间,所以我为两个类添加了一个名称空间。就我来说“水印”。

代码语言:javascript
复制
namespace Watermark
{
  public static class WatermarkService
  {
   ...
  }
}

“内部”中的WatermarkAdorner类,但除非它位于不同的程序集(dll)中,否则不会困扰您。如果是“公开”的话

然后在xaml中,我添加了一个名称空间声明。

代码语言:javascript
复制
xmlns:Controls="clr-namespace:Watermark"

那时一切都很好。

我稍微简化的xaml如下所示:

代码语言:javascript
复制
<AdornerDecorator >
      <ComboBox Height="23"  x:Name="cbVideoDevices"   
                             Initialized="cbVideoDevices_Initialized"                       
                             SelectionChanged="cbVideoDevices_SelectionChanged">
        <controls:WatermarkService.Watermark>
          <TextBlock>Type here to search text</TextBlock>
        </controls:WatermarkService.Watermark>
      </ComboBox>
    </AdornerDecorator>

除了去掉你的边距和对齐之外,它基本上和你的一样。

这有用吗?

另外,我不喜欢在组合框中选择某一项时水印仍然显示的事实,因此我将WatermarkService中的WatermarkService方法更改如下:

代码语言:javascript
复制
private static void Control_Loaded(object sender,RoutedEventArgs e)
{
  Control control = (Control)sender;
  if(ShouldShowWatermark(control))
  {
    ShowWatermark(control);
  }
  else
  {
    RemoveWatermark(control);
  }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5397334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档