У меня есть приложение Silverlight с некоторыми картами, и на той же странице это приложение работает, у меня есть таблица, описывающая значения, связанные с картой. Я хочу создать способ, чтобы при наведении мыши на какой-либо значок на карте строка с соответствующим идентификатором была подсвечена. Возможно ли это? Я использую простые asp-таблицы, на ASP MVC.Есть ли способ приложения Silverlight запускать javascript на странице ASP?
Следуя инструкциям AnthonyWJones, я сделал это:
Silverlight
private void MapClick(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 4; i++)
{
System.Windows.Controls.Primitives.ButtonBase button = (System.Windows.Controls.Primitives.ButtonBase)VisualTreeHelper.GetChild(RegionCanvas, i);
if (button.IsPressed)
HtmlPage.Window.Invoke("highlightRow",(int)button.DataContext);
}
}
ASPX
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
function highlightRow(id) {
id = "porto" + id;
document.getElementById(id).setAttribute("bgColor", "#123456");
}
</script>
<%try{ %>
<h2><%:(String) Model.FirstOrDefault().estado%></h2>
<%} %>
<%catch (Exception e) { }%>
<table id="tblLayout">
<tr>
<td><div style="height:300px">
<object data="data:application/x-silverlight-2,"
type="application/x-silverlight-2" height="300px" style="width: 400px">
<param name="source" value="/ClientBin/MiniSIG.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40818.0" />
<%try{ %>
<param name="initParams" value="startPage=<%:(String) Model.FirstOrDefault().estado%>" />
<%} %>
<%catch (Exception e) { }%>
<%finally{
if(Model.FirstOrDefault() == null){%>
<param name="initParams" value="startPage=main" />
<%} }%>
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object>
</div> </td>
<td><table>
<tr>
<th>
ID do Porto
</th>
<th>
Nome
</th>
<th>
Cidade
</th>
<th>
ID da Cidade
</th>
<th>
Tipo
</th>
</tr>
<% foreach (var item in Model) { %>
<tr id="porto<%: item.idporto %>">
<td>
<%: item.idporto %>
</td>
<td>
<%: Html.ActionLink(item.nome, "../Portos/Details/"+item.idporto)%>
</td>
<td>
<%: item.municipio %>
</td>
<td><%: item.idcidade %></td>
<td>
<%: item.tipo %>
</td>
</tr>
<% } %>
</table></td>
</tr>
</table>
<p>
<%: Html.ActionLink("Voltar", "Index") %>
</p>
</asp:Content>
Можете ли вы сказать мне, если я делаю что-то не так? Я попытался запустить его, но это не сработало.
Одна вещь, которая выглядит странно, это использование кнопки '(int). DataContext', которая просто выглядит не так. Возможно, вы захотите расширить «это не сработало». Что оно делает? Вы пытались отладить javascropt? делает ли оно исключение? – AnthonyWJones