有人有任何巧妙的解决方案来防止 Silverlight ChildWindow 被移动吗?
谢谢,马克
不需要创建新课程,而是
从以下位置复制样式:http: //msdn.microsoft.com/en-us/library/dd833070%28VS.95%29.aspx
给x:key="stylename"
在 的构造函数中Childwindow
,在前面粘贴以下代码InitializeComponent
:
this.Style = App.Current.Resources["childWindow"] as Style;
上述解决方案解决了我的问题
我不确定你会称之为整洁,但...
ImmovableChildWindow
。ChildWindow
.ImmoveableChildWindow
ImmovableChildWindow
请注意样式的现有 TargetType 值。TargetType
为与现有ImmovaleChildWindow
样式相同的值。ImmovableChildWindow
。Template
setter 中查找将 of 更改TargetType
为与样式相同的值TargetType
Border
名称为Chrome的。删除x:Name="Chrome"
属性。(这是我们真正追求的)。现在,当您创建一个新的 ChildWindow 项目时,默认情况下它将继承 form ChildWindow
,如果您希望它不可移动,则需要将其修改为继承自ImmovableChildWindow
(更改代码隐藏中的基本类型和 xaml 中的根标记名称)。
将ChildWindow
事件附加到FrameWorkElement
名称为“Chrome”的 ,这使得子窗口可以移动。然而,作为一个表现良好的模板化控件,如果它找不到一个FrameworkElement
名为“Chrome”的控件,它会在没有该功能的情况下继续工作。
也许您可以尝试这种简单的方法来做到这一点:创建一个网格来扭曲您 ChildWindow 中的所有内容。
<Grid Margin="0">
<!--Your ChildWindow. Canvas, Grid, Textblock...Whatever-->
</Grid>
由于 Grid 的边距为 0,因此您无法单击并移动它。