首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverlight -防止ChildWindow移动

Silverlight -防止ChildWindow移动
EN

Stack Overflow用户
提问于 2010-04-20 18:41:56
回答 3查看 1.5K关注 0票数 0

谁有什么干净利落的解决方案来防止移动Silverlight ChildWindow?

谢谢,马克

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-21 02:46:23

我不确定你会不会称之为整洁但是..。

  • 创建一个新的模板化控件,并将其命名为ImmovableChildWindow。将其继承的类修改为ChildWindow.
  • Open ImmoveableChildWindow
  • In /Generic.xaml您将在ChildWindow Styles and Templates.
  • Note中找到style.
  • Copy'n‘的初始样式Silverlight文档您将在ChildWindow Styles and Templates.
  • Note中找到file.
  • Replace的现有模板ImmovableChildWindow style.
  • Copy’n‘的现有TargetType值将文档中ChildWindow的整个默认样式粘贴到您的Themes/generic.xaml此副本的file.
  • Replace TargetType的值与正在退出ImmovaleChildWindow style。
  • 现在可以删除初始样式。只留下现在针对ImmovableChildWindow.
  • Find的Chrome style的大副本,在TargetType
  • Search设置程序中,通过模板将ChildWindow的TargetType更改为与样式setter相同的值,然后找到一个名为ChromeBorder。删除x:Name="Chrome"属性。(这才是我们真正想要的)。

现在,当您创建一个新的ChildWindow项时,它将默认继承自ChildWindow,如果您希望它是不可移动的,则需要将其修改为继承自ImmovableChildWindow (更改代码隐藏中的基类型和xaml中的根标记名称)。

ChildWindow将事件附加到名为"Chrome“的FrameWorkElement上,这使子窗口可以四处移动。然而,作为一个行为良好的模板化控件,如果它找不到名为"Chrome“的FrameworkElement,它就会在没有该功能的情况下继续工作。

票数 1
EN

Stack Overflow用户

发布于 2011-12-06 21:34:10

不需要创建新类,而是

从:http://msdn.microsoft.com/en-us/library/dd833070%28VS.95%29.aspx复制

  1. 样式

  1. x:key="stylename"

  1. Childwindow的构造器中,在InitializeComponentthis.Style = App.Current.Resources["childWindow"] as Style;

之前粘贴以下代码

上面的解决方案解决了我的问题

票数 1
EN

Stack Overflow用户

发布于 2011-03-15 23:09:12

也许你可以尝试这个简单的方法:创建一个网格来扭曲你ChildWindow中的所有内容。

代码语言:javascript
复制
<Grid Margin="0">

<!--Your ChildWindow. Canvas, Grid, Textblock...Whatever-->

</Grid>

由于网格的页边距为0,因此不能单击并移动它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2674353

复制
相关文章

相似问题

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