嘿,我试着实现一个班级约翰做的Watermark。
我被困住了,想知道是否有人能帮我.在wpf中添加了上述两个类:
<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的帮助下,我让它发挥作用,但让任何人知道,谁确实使用这个。
发布于 2011-03-22 23:48:16
我试过这个例子,它对我有用。
然而,我确实注意到以下几点:
这些类没有指定名称空间,所以我为两个类添加了一个名称空间。就我来说“水印”。
namespace Watermark
{
public static class WatermarkService
{
...
}
}“内部”中的WatermarkAdorner类,但除非它位于不同的程序集(dll)中,否则不会困扰您。如果是“公开”的话
然后在xaml中,我添加了一个名称空间声明。
xmlns:Controls="clr-namespace:Watermark"那时一切都很好。
我稍微简化的xaml如下所示:
<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方法更改如下:
private static void Control_Loaded(object sender,RoutedEventArgs e)
{
Control control = (Control)sender;
if(ShouldShowWatermark(control))
{
ShowWatermark(control);
}
else
{
RemoveWatermark(control);
}
}https://stackoverflow.com/questions/5397334
复制相似问题