WPF,Loaded事件与Visibility属性值有关系? 你如果 把 Collapsed 改成 Hidden,它或许永远都不会出现弹出框。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我试了一下,改成Hidden,不仅会弹出对话框,而且每次都会弹出我更迷惑了.......... 设置Visibility ="Collapsed"只是说CustomControl1看不到,但是看不到和触发load事件是没有关系的。只要在xaml调了 <local:CustomControl1 Margin="0,144,10,145" Width="Auto"/>就会执行load 你是想法和我一样,但是,事与愿违。并没有触发load事件 我试了一下,改成Hidden,不仅会弹出对话框,而且每次都会弹出我更迷惑了..........我的理解是,这是xaml编译的问题,你可以在一个布局页面,尝试去修改visible的几个属性,会发现可以得到不同的结果修改成 Collapsed ,发现 该部分被隐藏;修改成Hidden,发现 该部分没有显示,但它所占用的区域还是呈现出来的。xaml会转换成BAML(二进制应用程序标记语言),最终会最为资源,生成相应的dll文件。 Visibility有3个枚举值,Visble,Collapsed(元素不可见且不参与布局),Hidden(元素不可见却参与布局) 真的搞不懂是什么原因了。<Window x:Class="WPF2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WPF2" Title="MainWindow" Height="350" Width="525"> <Grid> <Button Content="李四" Visibility="Collapsed" Loaded="Button_Loaded"/> </Grid></Window>private void Button_Loaded(object sender, RoutedEventArgs e){ MessageBox.Show("jhkjk");}如果如你所说,这段代码中就不应该弹出对话框,而事实上,每次编译都会弹出对话框 this.Loaded += CustomControl1_Loaded;改到构造函数执行 你的意思是,在Loaded中去设置Visibility?可是上面的问题没有得到解决啊我感觉WPF就像新东西,好多问题都没人知道 你的意思是,在Loaded中去设置Visibility?可是上面的问题没有得到解决啊我感觉WPF就像新东西,好多问题都没人知道说得还不够清楚?在构造函数里添加Loaded时间委托 楼主的问题问得不清。你说编译运行会出问题,那么直接运行exe还有问题吗?这很重要。我运行了你的代码,不论调试运行还是直接运行,第一次会弹出对话框,以后都不会了。不知道重启电脑后怎么样,没测试。这应该跟WPF的某种缓存有关。其次是你的设计问题,P_xG说得很清楚,你应该在构造函数里订阅事件。构造函数这么方便,你怎么会用到隐藏这么深的OnApplyTemplate?WPF 框架级布局系统将在每个测量处理过程中调用 ApplyTemplate。[1]OnApplyTemplate被ApplyTemplate调用。Visibility 不为 Visible 的元素不参与输入事件(或命令),不影响布局的测量或排列处理过程,不在 Tab 键序列中,并且不会在命中测试中报告。[2] 其实无需告诉我怎么做,我就是想知道Collapsed值对元素的Loaded事件有什么影响。MSDN只说过:Visibility 不为 Visible 的元素不参与输入事件(或命令),不影响布局的测量或排列处理过程,不在 Tab 键序列中,并且不会在命中测试中报告。 WPF 框架级布局系统将在每个测量处理过程中调用 ApplyTemplate。[1]OnApplyTemplate被ApplyTemplate调用。Visibility 不为 Visible 的元素不参与输入事件(或命令),不影响布局的测量或排列处理过程,不在 Tab 键序列中,并且不会在命中测试中报告。[2] WPF 框架级布局系统将在每个测量处理过程中调用 ApplyTemplate。[1]OnApplyTemplate被ApplyTemplate调用。Visibility 不为 Visible 的元素不参与输入事件(或命令),不影响布局的测量或排列处理过程,不在 Tab 键序列中,并且不会在命中测试中报告。[2]正因为如此,就迷惑了。MSDN说:WPF 框架级布局系统将在每个测量处理过程中调用 ApplyTemplate。而正如你所粘贴的MSDN:Visibility 不为 Visible 的元素不参与输入事件(或命令),不影响布局的测量或排列处理过程。既然Visibility为Collapsed也不会影响布局的测量,那么楼顶的代码中,OnApplyTemplate方法就应该执行,Loaded事件也就会关联。然而,并没有如此 不影响布局的测量我认为意思是不参与布局的测量。又,在每个测量处理过程中调用 ApplyTemplate,则Visibility为Collapsed的元素不参与测量,不会被调用ApplyTemplate,不会被调用OnApplyTemplate。 大家看一下这个正则表达式为什么不能用啊? C#如何读取dat文件? 高手帮帮忙 C#新手,推荐送分 怎样用WebRequest登陆这个网站呢 高手看过来."无效的ResX 输入" 在线waitting 100分求用asp.net和C#实现的聊天室代码(在线等) 一个小问题! 求sqlite-netFx40-setup-bundle-x86-2010-1.0.91.0资源 求解答.net 值班表 获取本地时间后怎么赋值 制作图种捆绑软件
我更迷惑了..........
只要在xaml调了 <local:CustomControl1 Margin="0,144,10,145" Width="Auto"/>
就会执行load
我更迷惑了..........
我的理解是,这是xaml编译的问题,你可以在一个布局页面,尝试去修改visible的几个属性,会发现可以得到不同的结果
修改成 Collapsed ,发现 该部分被隐藏;修改成Hidden,发现 该部分没有显示,但它所占用的区域还是呈现出来的。
xaml会转换成BAML(二进制应用程序标记语言),最终会最为资源,生成相应的dll文件。
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPF2"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="李四" Visibility="Collapsed" Loaded="Button_Loaded"/>
</Grid>
</Window>
private void Button_Loaded(object sender, RoutedEventArgs e)
{
MessageBox.Show("jhkjk");
}如果如你所说,这段代码中就不应该弹出对话框,而事实上,每次编译都会弹出对话框
改到构造函数执行
我感觉WPF就像新东西,好多问题都没人知道
我感觉WPF就像新东西,好多问题都没人知道
说得还不够清楚?在构造函数里添加Loaded时间委托
Visibility 不为 Visible 的元素不参与输入事件(或命令),不影响布局的测量或排列处理过程,不在 Tab 键序列中,并且不会在命中测试中报告。
WPF 框架级布局系统将在每个测量处理过程中调用 ApplyTemplate。[1]OnApplyTemplate被ApplyTemplate调用。Visibility 不为 Visible 的元素不参与输入事件(或命令),不影响布局的测量或排列处理过程,不在 Tab 键序列中,并且不会在命中测试中报告。[2]
WPF 框架级布局系统将在每个测量处理过程中调用 ApplyTemplate。[1]OnApplyTemplate被ApplyTemplate调用。Visibility 不为 Visible 的元素不参与输入事件(或命令),不影响布局的测量或排列处理过程,不在 Tab 键序列中,并且不会在命中测试中报告。[2]
正因为如此,就迷惑了。
MSDN说:WPF 框架级布局系统将在每个测量处理过程中调用 ApplyTemplate。
而正如你所粘贴的MSDN:Visibility 不为 Visible 的元素不参与输入事件(或命令),不影响布局的测量或排列处理过程。既然Visibility为Collapsed也不会影响布局的测量,那么楼顶的代码中,OnApplyTemplate方法就应该执行,Loaded事件也就会关联。然而,并没有如此