【发布时间】:2010-04-20 10:41:55
【问题描述】:
任何人有任何巧妙的解决方案来防止 Silverlight ChildWindow 被移动?
谢谢, 标记
【问题讨论】:
标签: silverlight silverlight-3.0 childwindow
任何人有任何巧妙的解决方案来防止 Silverlight ChildWindow 被移动?
谢谢, 标记
【问题讨论】:
标签: silverlight silverlight-3.0 childwindow
我不确定你是否会称其为整洁,但...
ImmovableChildWindow。 ChildWindow。ImmoveableChildWindow 的初始样式
ImmovableChildWindow 样式的现有 TargetType 值。TargetType 替换为与现有ImmovaleChildWindow 样式相同的值。ImmovableChildWindow。Template 设置器中查找将TargetType 的值更改为与样式TargetType 相同的值
Border。删除x:Name="Chrome" 属性。 (这才是我们真正追求的)。现在,当您创建一个新的 ChildWindow 项目时,默认情况下它将继承 ChildWindow,如果您希望它是不可移动的,则需要修改它以从 ImmovableChildWindow 继承(更改代码隐藏中的基本类型和xaml 中的根标记名称)。
ChildWindow 将事件附加到名为“Chrome”的FrameWorkElement,这使得子窗口可以移动。然而,作为一个表现良好的模板化控件,如果它找不到名为“Chrome”的FrameworkElement,它会在没有该功能的情况下继续工作。
【讨论】:
不需要创建新类,而是
从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;
以上解决方案解决了我的问题
【讨论】:
也许你可以试试这个简单的方法来做到这一点: 创建一个网格来扭曲 ChildWindow 中的所有内容。
<Grid Margin="0">
<!--Your ChildWindow. Canvas, Grid, Textblock...Whatever-->
</Grid>
由于 Grid 的边距为 0,因此您无法单击并移动它。
【讨论】: