item.MouseDoubleClick + = TreeViewItem_MouseDoubleClick; // Вот проблема
blockquote>Вы не получаете события для элементов даты, потому что вы не подписываетесь на эти элементы. Только узлы верхнего уровня присоединяют событие. Вы захотите подписаться на событие для дочерних элементов
Попробуйте вместо этого:
// Adding new client to TreeView TreeViewItem item = new TreeViewItem(); item.Header = entry.Key; foreach (var date in entry.Value.ToArray()) { var child = new TreeViewItem(); child.Header = date; child.MouseDoubleClick += TreeViewItem_MouseDoubleClick; // Only subscribe to the child item.Items.Add(child); } try { Arbol_Clientes.Items.Add(item); } catch (Exception error) { Console.WriteLine("ERROR: " + error.ToString()); }
Существует огромное количество способов сделать это с ColdFusion.
Application.cfc выполняется по каждому запросу и имеет два метода (onRequestStart
и onRequestEnd
) это может использоваться, чтобы предварительно ожидать/добавлять содержание к основному сценарию на странице.
Также стоящий замечания, возможно расшириться/наследовать Ваш Application.cfc, допуская более сложный набор событий RequestStart/End. Больше деталей здесь и здесь.
Пользовательские Теги позволяют Вам создавать тег, что можно перенести каждый шаблон для применения расположения/и т.д. Это также позволяет атрибутам/и т.д. определять общий но изменяющийся текст.
Например:
<cf_page PageTitle="My Page">
[main page content]
</cf_page>
И в пользовательском теге (page.cfm) Вы имейте:
<cfif ThisTag.ExecutionMode EQ 'start'>
<cfparam name="Attributes.PageTitle" default=""/>
<cfcontent reset/><cfoutput><!DOCTYPE html>
<html>
<head>
<title>My Website - #Attributes.PageTitle</title>
[styles and scripts and stuff]
</head>
<body>
<div id="heading">
<img src="my_website_logo.png" alt="My Website"/>
</div>
<ul id="mainmenu" class="nav">
[menu]
</ul>
<h1>#Attribute.PageTitle#</h1>
</cfoutput>
<cfelse>
<cfoutput>
<div id="footer">
[footer]
</div>
</body></html></cfoutput>
</cfif>
И конечно можно или создать несколько пользовательских тегов или один тег, который работает несколькими способами в зависимости от указанных Атрибутов.
Henry уже упомянул Платформы MVC, но Вы не должны делать MVC для использования функциональности шаблонной обработки/расположения.
Коробка с плавкими предохранителями может сделать MVC, но это не требует, чтобы Вы сделали так, и ContentVariables eitherway FB являются хорошим инструментом для реализации модульного содержания с - если Ваш ведущий разработчик не может выровнять по ширине свою неприязнь к Коробке с плавкими предохранителями (и предложить альтернативу, которая соответствует Вашему проекту лучше!) затем нет абсолютно никакой причины не пойти для него - это - сформировавшаяся и известная платформа, простая в использовании, много разработчиков, и так далее.
Однако, если Коробка с плавкими предохранителями действительно не является опцией, смотрите на список Charlie Arehart платформ - что страница в целом является огромным списком инструментов, которые стоит посмотреть на.
Так или иначе это должно дать Вам достаточно вещей рассмотреть на данный момент...
Разработчики ColdFusion начали использовать пользовательский тег, названный cf_bodycontent в конце 90-х, чтобы избежать необходимости включать отдельный заголовок и файлы нижнего колонтитула. Это было за шесть или семь лет до Основных Страниц ASP.NET.;-)
Теперь существует собственный тег, который делает то же самое: cfsavecontent. Вот сущность того, как люди используют cfsavecontent в шаблонах.
<!--- index.cfm --->
<cfsavecontent variable="content">
<cfinclude template="#url.action#.cfm">
</cfsavecontent>
<cfinclude template="template.cfm">
<!--- template.cfm --->
<cfparam name="title" default="Welcome">
<html>
<head><cfoutput>#title#</cfoutput></head>
<body>
... header, menu, sidebar, whatever ...
<cfoutput>#content#</cfoutput>
... right column, footer ...
</body>
</html>
<!--- foo.cfm --->
<cfset title="Welcome to Foo">
Hello World! I'm the page at index.cfm?action=foo
<!--- bar.cfm --->
<cfset title="Welcome to Bar">
Hello World! I'm the page at index.cfm?action=bar
Если Вы хотите, помещает шаблон в шаблоне, просто добавляют другой cfsavecontent.
<!--- index.cfm --->
<cfsavecontent variable="content">
<cfinclude template="#url.action#.cfm">
</cfsavecontent>
<cfsavecontent variable="content">
<cfinclude template="internal_template.cfm">
</cfsavecontent>
<cfsavecontent variable="content">
<cfinclude template="master_template.cfm">
</cfsavecontent>
<cfoutput>#content#</cfoutput>
Вы могли осуществить рефакторинг для включения дублирования.
<!--- index.cfm --->
<cfsavecontent variable="content">
<cfinclude template="#url.action#.cfm">
</cfsavecontent>
<cfparam name="templates" default="internal,master">
<cfloop list="#templates#" index="t">
<cfsavecontent variable="content">
<cfinclude template="#t#_template.cfm">
</cfsavecontent>
</cfloop>
<cfoutput>#content#</cfoutput>
Если Вы хотите иметь один шаблон, "расширяют" другого, Вы могли бы, возможно, сделать так путем превращения списка в стек, и наличие каждого шаблона продвигает своего родителя на стек.
<!--- internal_template.cfm --->
<cfset templates = listAppend("master", templates)>
...
<cfoutput>#content#</cfoutput>
...
<!--- index.cfm --->
<cfsavecontent variable="content">
<cfinclude template="#url.action#.cfm">
</cfsavecontent>
<cfparam name="templates" default="internal">
<cfloop condition="listlen(templates) gt 0">
<cfset t = listFirst(templates)>
<cfset templates = listRest(templates)>
<cfsavecontent variable="content">
<cfinclude template="#t#_template.cfm">
</cfsavecontent>
</cfloop>
<cfoutput>#content#</cfoutput>
И таким образом у Вас есть StackBox, платформа ColdFusion, изобретенная на StackOverflow.:-)
Можно попробовать одну из платформ MVC с шаблонной поддержкой (почти у всех есть он).
ColdBox, Образцовое Связующее звено, Mach-II, коробка с плавкими предохранителями...
Эта страница Galleon Forum Ports Comparisons выделяется, как каждая платформа обрабатывает Шаблоны...