gpt4 book ai didi

c# - 动态数据模板 silverlight 事件

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:57 24 4
gpt4 key购买 nike

查找有关如何仅使用代码将事件挂接到 silverlight 的 DataTemplate 的信息。这会使我的浏览器在呈现时崩溃。

private DataTemplate Create(Type type)        
{
DataTemplate dt = new DataTemplate();
string xaml = "<DataTemplate x:Name='dt' xmlns='http://schemas.microsoft.com/client/2007' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' xmlns:basics='clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls' >"
+ "<Border Height='135' Width='110' HorizontalAlignment='Left' VerticalAlignment='Top' Background='#7FFCFAFA' CornerRadius='5,5,5,5'>"
+ "<StackPanel Orientation='Vertical' Width='110' Height='135'>"
+ "<Image Source='{Binding Path=ThumbnailPath}' Width='64' Height='64' Margin='5' HorizontalAlignment='Left' />"
+ "<TextBlock Text='{Binding Path=Title}' Margin='5' FontFamily='Verdana' HorizontalAlignment='Left' TextWrapping='Wrap' Foreground='#FFFAF8F8' Width='100' FontSize='9' />"
+ "<TextBlock Text='{Binding Path=FileDuration}' Margin='5' FontFamily='Verdana' HorizontalAlignment='Left' Foreground='#FFFAF8F8' Width='100' FontSize='9'/>"
+ "<StackPanel Orientation='Horizontal' Background='{x:Null}' x:Name='GridMenuBar'>"
+ "<Button ClickMode='Press' x:Name='play_buttons' HorizontalAlignment='Left' Template='{StaticResource GlassPlay}' BorderBrush='{x:Null}' Foreground='#FFF9F7F7' Background='{x:Null}' />"
//+ "<Button Height='Auto' HorizontalAlignment='Left' VerticalAlignment='Top' Width='Auto' Content='Button' x:Name='addPlayListItemButton' Template='{StaticResource GlassAddPlaylist}' Click='addPlayListItemButton_Click' />"
+ "</StackPanel>"
+ "</StackPanel>"
+ "</Border>"
+ "</DataTemplate>";
dt = (DataTemplate)XamlReader.Load(xaml);
return dt;
}

最佳答案

你得到了什么样的异常?您可以通过查看浏览器状态栏中的脚本错误图标找到它。除非你的意思是这实际上完全杀死了浏览器进程。这不应该发生,但如果发生,您可以在导航到该页面之前将 Visual Studio 附加到您的浏览器进程。

现在,我对问题出在哪里有了一些猜测。首先,您在模板中引用了一些仅存在于页面范围内的组件。例如,您的按钮引用了一个静态模板“GlassPlay”,它还(尽管被注释掉了)引用了一个处理程序 addPlayListItemButton_Click ,它将驻留在代码隐藏中。 XamlReader 没有上下文来理解将这些东西连接到哪里。


只是内部提示,用户控件不会使用 XamlReader 加载自身,而是使用 Application.LoadComponent 加载。 LoadComponent 确实有一些范围,但它仍然期望所有标记作为一个单元加载,并期望它们全部来自资源 URI(无法从字符串加载)。


动态数据模板是可能的,甚至引用模板外的资源也应该没问题。我知道这在 WPF 中有效,并且在将模板添加到可视化树时解析资源。我不确定它在 Silverlight 中是否有效,但我很确定它确实有效。

点击处理程序是您最大的问题。不要尝试在标记中分配处理程序。相反,给按钮一个名称并使用 FindName加载后在模板实例上获取按钮。从那里您可以订阅代码中的事件。

希望对您有所帮助。

关于c# - 动态数据模板 silverlight 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com