【发布时间】:2014-08-07 00:43:27
【问题描述】:
我正在开发一个 Windows Phone 8 C# 和 SQLite 应用程序。我是 Windows Phone 应用程序的新手,通常使用 PHP 和 JS。
有一个 LongListSelector,它的每一项都是一个 Button。每个 Button 都应该引用一个从 SQLite 类绑定的 ID:
<phone:LongListSelector x:Name="llsRadios" ItemsSource="{Binding Radios}" ItemTemplate="{StaticResource DataTemplate1}"/>
数据模板1:
<DataTemplate x:Key="DataTemplate1">
<Grid>
<Button x:Name="btnFoo" Template="{StaticResource ButtonControlTemplate1}" Click="btnFoo_Click" />
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu IsZoomEnabled="True" x:Name="ContextMenu" >
<toolkit:MenuItem x:Name="btnEditFoo" Header="edit" Click="btnEditFoo_Click"/>
<toolkit:MenuItem x:Name="btnDeleteFoo" Header="delete" Click="btnDeleteFoo_Click"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</Grid>
</DataTemplate>
ButtonControlTemplate1:
<ControlTemplate x:Key="ButtonControlTemplate1" TargetType="Button">
<Grid>
<TextBlock x:Name="lblName" Text="Name" />
<TextBlock x:Name="lblCountry" Text="Country" />
</Grid>
</ControlTemplate>
例如,当用户单击其中一个按钮时,我需要在事件 Click 上获取表示 SQLite 上一行的 ID 值,然后运行 select * from table where ID = ...。
在 JavaScript 中,我会添加一个属性 data-id 并处理如下事件:
this.getAttribute('data-id');
// run an AJAX request
我的第一个想法是绑定到Content的每个按钮的ID,这样我就可以在btnFoo_click上运行:
Button btn = sender as Button;
var ID = sender.Content;
// Do SQLite select.
但这似乎不是正确的方法。此外,我还必须在 ConceptMenus 上使用相同的概念(暂停时,将显示两个选项:编辑和删除。这些必须对用户选择的元素执行操作。)
我还认为我可以访问按钮的模板并找到一个隐藏元素,其想法与将值绑定到其Text 或Content 属性的想法相同。但我找不到从模板中选择元素的方法,有点像 jQuery 的 find:$('.parent').find('.element-i-need');
坚持第二个想法,我如何在单击的按钮/元素的ControlTemplate 上按元素名称搜索元素?
【问题讨论】:
标签: c# xaml mobile windows-phone-8