我在C#Windows应用商店应用中有一个包含项目的Listview(这就是你所说的那些?我听说他们不再称为Metro Apps了).
与Android中的ExpandableListView类似,我希望能够点击该列表项目的列表项目(而非按钮)进行扩展,点击展开的列表项目以使其折叠,如果您点击另一个列表项目,则当前展开的列表项目将会崩溃,另一个将扩大.
在我的特定情况下,我有一个DataTemplate扩展和非扩展的listitems视图.我已经看到Android的ExpandableListView可以使用附加信息扩展listitem (来自WPF 的Expander做类似的事情),而不是用更大的项目替换它,但在Windows应用商店应用程序中是否有一个通用的解决方案?如果没有,最接近的等价物是什么?
如下图所示,我想知道是否有一个组件可以通过这种方式扩展listitems,或者如果没有,我有哪些替代方案:

出于好奇,是否可以将变量分配给两种类型?
由于我在这个问题上没有直接的技术术语,所以让我澄清一下.通常你会有一个静态和动态类型:
Animal a = new Dog();
Run Code Online (Sandbox Code Playgroud)
动态类型必须继承静态类型:
public class Dog extends Animal {...}
Run Code Online (Sandbox Code Playgroud)
但是有可能确保动态类型扩展/实现多种类型吗?
那么Dog必须扩展Animal-class并实现一个接口?
我想象的是:
Animal [implements Happy] a = new Dog();
Run Code Online (Sandbox Code Playgroud)
我很确定这只是疯狂的谈话,但它有可能吗?如果没有,最接近的替代方案是什么?
我认为这只有在确保变量属于您自己制作的界面和无法编辑的类时才有意义.
我能想到的一种方法是每次使用时通过强制转换来确定运行时:
try {
@SuppressWarnings("unused")
Animal a = (Happy) new Dog();
} catch (ClassCastException e) {
//Is not of type Happy
}
//Using a method from the Happy-interface
try {
((Happy)a).smile();
} catch (ClassCastException e) {
//Is not of type Happy
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个基本的chrome扩展.在发现根上下文菜单每个插件只能包含一个项目之后,我想至少能够为父项命名除了我的插件名称之外的其他内容:
chrome.contextMenus.create({
title: "Child Item 1",
contexts:["selection"],
});
chrome.contextMenus.create({
title: "Child Item 2",
contexts:["selection"],
});
Run Code Online (Sandbox Code Playgroud)
那我该怎么做?
如果您想了解更多背景信息,这个问题与我的上一个问题有关.
我的问题是:是否有可能在asp.net表格中制作单元格?
或者至少可以在ASP.NET中创建一个可点击的WebControl(应该可以放在ControlCollection中),而不是Button或LinkButton?如果没有,是否可以将多行信息输入按钮文本?
我已经尝试将其他组件添加到按钮的ControlCollection(我已经看到在Windows窗体版本的Button中工作),看看我是否可以将子组件渲染到按钮,但没有成功:
private void ModifyTableCell(TableCell cell)
{
//Create new button
Button btnCell = new Button();
btnCell.Click += (sender, args) =>
{
//Event for the button
};
//Create new Label
Label lblCell = new Label();
lblCell.Font.Bold = true;
lblCell.Text = "This text won't appear";
btnCell.Controls.Add(lblCell); //Attempt to add label to Button
cell.Controls.Add(btnCell);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我最后只为整个单元格创建了一个多行的LinkButton.
作为对TableName的MySqlParameter的反应,似乎MySQL的Connector/NET库不支持用户输入的表名,方式如下:
MySqlCommand cmd = new MySqlCommand("SELECT * FROM @table");
cmd.Parameters.AddWithValue("@table",TableNameFromUserInput);
Run Code Online (Sandbox Code Playgroud)
所以我试图找到另一种方式,但我找不到任何为我这样做的库.
当手动搜索如何执行此操作时,我找不到任何没有告诉您使用某些已定义库中的"预准备语句"的内容,无论语言是什么.
由于我对SQL的了解有限,我只认为有必要在用户输入周围添加反引号(`),然后检查输入是否有反引号 - 但我想确定.
当MySQL Connector不支持时,如何保护用户指定的表名不受SQL-Injection的影响?
c# ×3
asp.net ×1
button ×1
contextmenu ×1
java ×1
listview ×1
mysql ×1
touch ×1
web-controls ×1
xaml ×1