我有一个列表框,使用GroupStyle对项目进行分组.我想在stackpanel的底部添加一个控件来保存所有组.此附加控件需要是滚动内容的一部分,以便用户滚动到列表的底部以查看控件.如果我使用的是没有组的列表框,则通过修改ListBox模板可以轻松完成此任务.但是,对于分组的项目,ListBox模板似乎仅适用于每个组.我可以修改GroupStyle.Panel,但这不允许我向该面板添加项目.
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VirtualizingStackPanel/> **<----- I would like to add a control to this stackpanel**
</ItemsPanelTemplate>
</GroupStyle.Panel>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Grid>
<ItemsPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListBox.GroupStyle>
Run Code Online (Sandbox Code Playgroud)
这应该让我知道我需要做什么:

我尝试在我的Windows窗体应用程序中实现重做撤消.
我建立了一个链表,列表中的每个输入都是一个保存表单中所有元素状态的类.
每次单击"保存"按钮,都会在此列表中插入表单元素的最后一个状态.
当用户点击撤销按钮时,我想获得列表的输入(一个在最后一个之前)并加载它.
我不知道从链表中获取此元素的简单方法是什么?
我的代码看起来像:
public class SaveState {
public int comboBox1;
public int comboBox2;
..........
public SaveState() {
.......
}
}
LinkedList<SaveState> RedoUndo = new LinkedList<SaveState>();
# in save function
var this_state = new SaveState();
this_state = getAllState();
RedoUndo.AddLast(this_state);
# when click undo
var cur_state = new SaveState();
# this lines dont work !!!!!!!!!
int get = RedoUndo.Count - 1;
cur_state = RedoUndo.Find(get);
setAllState(cur_state);
Run Code Online (Sandbox Code Playgroud) 我正在创建一个应用程序,用户将单击form1上的按钮,这将导致form2显示.然后,用户将在form2上填写聊天,然后单击将关闭form2的按钮,并将参数发送回form1进行处理.我怎么能在C#中做到这一点?我见过人们使用属性来做这件事,但是这些例子还不够清楚.有人可以给出一些示例代码,告诉我如何传递参数吗?我更喜欢属性方法,但只要它有效,我会把它算作答案.
考虑以下(简化)示例:
abstract class Bar[T] {
val f: PartialFunction[T, T]
val default: PartialFunction[T, T] = { case x => x }
val chained = f orElse default
}
class Foo extends Bar[Int] {
val f: PartialFunction[Int, Int] = { case 1 => 2 }
}
Run Code Online (Sandbox Code Playgroud)
看着它崩溃:
scala> val foo = new Foo
java.lang.NullPointerException
at Bar.<init>(<console>:8)
at Foo.<init>(<console>:6)
at .<init>(<console>:7)
at .<clinit>(<console>)
at RequestResult$.<init>(<console>:9)
at RequestResult$.<clinit>(<console>)
at RequestResult$scala_repl_result(<console>)
....
Run Code Online (Sandbox Code Playgroud)
但是,如果我们chained输入具体的类:
abstract class Bar[T] {
val f: PartialFunction[T, T]
val default: …Run Code Online (Sandbox Code Playgroud) 这种情况有效:
Seq(fromDir, toDir) find (!_.isDirectory) foreach (println(_))
Run Code Online (Sandbox Code Playgroud)
然而,这不是:
Seq(fromDir, toDir) find (!_.isDirectory) foreach (throw new Exception(_.toString))
Run Code Online (Sandbox Code Playgroud)
编译以此错误结束:
error: missing parameter type for expanded function ((x$4) => x$4.toString)
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样写它再次编译:
Seq(fromDir, toDir) find (!_.isDirectory) foreach (s => throw new Exception(s.toString))
Run Code Online (Sandbox Code Playgroud)
我相信有合理的解释;)
我通常用Python编写管理脚本,我知道很多用Perl编写它们的代码.我本可以花一些时间来提高我在bash编程方面的技能.但我想知道周围的人是否认为这是一个好主意?
我知道bash是一个很好的技能,市场经常需要它但是......如果我能用Python或Perl来解决那么......真的值得付出努力吗?
作为答案,我正在寻找实际上bash比Perl或Python更好地开发管理脚本的情况.
在继续处理该请求之前,是否可以让CF应用程序检查有效的数据库?
这是因为可能存在数据库服务器可能已关闭或正在升级的情况,因此在发出数据库相关请求时会出现错误.
如果没有与数据库服务器的连接,则可以安全地将用户重定向到安全页面.
或者可以cfcatch工作?
怎么做这个检查?
谢谢.
我在一家游戏网吧工作,我们这里有一个系统(smartlaunch)可以跟踪游戏许可证。我编写了一个与该系统接口的程序(实际上,它是后端 MySQL 数据库)。该程序旨在在客户端 PC 上运行,并且 (1) 查询数据库以从可用池中选择一个未使用的许可证,然后 (2) 将此许可证标记为客户端 PC 正在使用。
问题是,我有一个并发错误。该程序旨在在多台机器上同时启动,当发生这种情况时,一些机器通常会尝试获取相同的许可证。我认为这是因为步骤 (1) 和 (2) 没有同步,即一个程序确定许可证 #5 可用并选择它,但在它可以将 #5 标记为正在使用之前,另一台 PC 上的另一个程序副本尝试获取相同的许可证。
我试图通过使用事务和表锁定来解决这个问题,但它似乎没有任何区别 - 我这样做对吗?下面是有问题的代码:
public LicenseKey Acquire() throws SmartLaunchException, SQLException {
Connection conn = SmartLaunchDB.getConnection();
int PCID = SmartLaunchDB.getCurrentPCID();
conn.createStatement().execute("LOCK TABLE `licensekeys` WRITE");
String sql = "SELECT * FROM `licensekeys` WHERE `InUseByPC` = 0 AND LicenseSetupID = ? ORDER BY `ID` DESC LIMIT 1";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setInt(1, this.id);
ResultSet results = statement.executeQuery();
if (results.next()) {
int licenseID …Run Code Online (Sandbox Code Playgroud) 我有一个C++应用程序,有一次断言失败,我无法重现.这是失败一次的代码:
unsigned int test(std::vector<CAction> actionQueue) {
unsigned int theLastCount = actionQueue.size() - 1;
std::vector<CAction>::const_reverse_iterator rItr = actionQueue.rbegin();
std::vector<CAction>::const_reverse_iterator rEndItr = actionQueue.rend();
for (; rItr != rEndItr; ++rItr, --theLastCount) {
const CAction &fileAction = *rItr;
if (fileAction.test()) {
continue;
}
return theLastCount;
}
assert(theLastCount == 0); // How could this fail?
return theLastCount;
}
Run Code Online (Sandbox Code Playgroud)
不知何故,循环完成后,LastCount不为零.
从我对逻辑的解读,这应该是不可能的,除非:
我在这里错过了一些愚蠢的东西,我的代码中是否有错误显示?请注意,在我看到这个的情况下,由于向量具有两个元素,因此应该将LastCount初始化为1.
我正在尝试在XNA 4.0中编写一个自定义的Minecraft Classic多人游戏客户端,但是当我真正在游戏中绘制世界时,我感到非常难过.每个块都是3D空间中的立方体,并且它可以在每一侧具有不同的纹理.我一直在互联网上阅读,发现对于一个立方体,每一面都有不同的纹理,每个面都需要自己的一组顶点.这使得每个立方体总共有24个顶点,如果你有一个由64*64*64立方体组成的世界(或者可能更多!),那就会产生很多顶点.
在我的原始代码中,我将纹理贴图分成单独的纹理,并在绘制每个立方体的每一面之前应用这些纹理贴图.我被告知这是一种非常昂贵的方法,我应该将纹理保存在同一个文件中,只需使用UV坐标将某些子纹理映射到立方体上.尽管如此,这对性能没有太大作用,因为顶点的数量太多了.我还被告知要在VertexBuffer中收集顶点并立即绘制它们,但这也没有多大帮助,并且当顶点数量超过缓冲区的最大大小时偶尔会导致异常.我尝试制作立方体共享顶点的任何尝试也都失败了,导致大量减速和毛刺的立方体.
我不知道该怎么做.我一般都非常擅长编程,但任何类型的3D编程或游戏开发都完全逃脱了我.
这是我用来绘制立方体的方法.我有两个全局列表List<VertexPositionTexture>以及List<int>,一个用于顶点和一个指数.绘图时,我遍历世界上的所有立方体,并对非空的立方体(如Air)进行RenderShape.我拥有的形状类粘贴在下面.AddVertices方法中的注释代码是尝试使多维数据集共享顶点.当所有立方体的顶点都已添加到列表中时,数据将粘贴到VertexBuffer和IndexBuffer中,并调用DrawIndexedPrimitives.
说实话,我可能完全错了,但我真的不知道该怎么做,并且没有教程实际描述如何绘制大量对象,只有非常简单的对象.我不得不弄清楚如何重做BasicShape以获得多个纹理.
c# ×3
scala ×2
admin ×1
bash ×1
c++ ×1
coldfusion ×1
coldfusion-8 ×1
coldfusion-9 ×1
concurrency ×1
fencepost ×1
forms ×1
groupstyle ×1
java ×1
linked-list ×1
listbox ×1
locking ×1
mysql ×1
parameters ×1
perl ×1
puzzle ×1
python ×1
wpf ×1
xna ×1