与上下文菜单项中的命令相关的有趣问题...
我想触发一个命令在我的控件InsertRowCmd中插入一行.此命令需要知道插入行的位置.
我可以使用Mouse.GetPosition(),但这会让我当前的鼠标位置,这将在菜单项上.我想获得上下文菜单的来源.
有没有人建议如何将上下文菜单的来源作为参数传递给命令?
示例代码:
<UserControl x:Name="MyControl">
<!--...-->
<ContextMenu x:Name="menu">
<MenuItem Header="Insert Row" Command="{x:Static customCommands:MyCommands.InsertRowCmd}" CommandParameter="?"/>
</ContextMenu>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
我目前的想法如下:
- 使用单击处理程序,以便我可以在代码中找到原点.问题是我必须处理启用/禁用.
-Handle单击事件并保存上下文菜单的原点.将此保存的信息传递给命令.我已经验证了在执行命令之前触发了click事件.
有任何想法吗?
编辑:
我正在使用Josh Smith的CommandSinkBinding将命令处理路由到我的ViewModel类.因此,处理命令执行的代码对视图一无所知.
因此,如果项目在滚动区域的末尾被剪切/裁剪,那么拥有无铬集合看起来真的很愚蠢.
我想为集合(ItemsControl/ListBox)创建一个虚拟化面板,它只绘制整个项目,而不是项目.例如:
______________
| |
|______________|
______________
| |
|______________|
______________
| |
Run Code Online (Sandbox Code Playgroud)

我不希望显示第三个部分容器,除非有足够的空间显示整个项目/容器.在示例中,由于空间不足,第三个项目被裁剪.
有什么建议?我应该尝试重新发明轮子(构建我自己的VirtualizingWholeItemPanel)吗?
编辑:
微软澄清说,VirtualizingPanel.ScrollUnit根本不打算执行此功能.看来,VirtualizingPanel.ScrollUnit提供一个非常类似的宗旨,以旧CanContentScroll上ScrollViewer.
我有一些带有一些文字的图像,我需要在列表框中显示带有相关文字的图像.
浏览谷歌我遇到了这个示例课程,
public class Customer
{
public string Fname;
public string Lname;
public Customer(string firstName, string lastName)
{
Fname = firstName;
Lname = lastName;
}
public override string ToString()
{
return Fname + " " + Lname;
}
}
lstCustomers.Items.Add(new Customer("Foo","Bar"));
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,因为它只返回字符串,如何将图像和字符串一起返回,以便它被添加到列表框?
最好的祝福
@nand
我正在尝试决定是否应该在其上创建一个带有按钮的简单StackPanel,或者我是否应该使用WPF ToolBar类来包含这些按钮(我正在创建一个简单的工具栏).
使用WPF的内置ToolBar控件有什么优缺点?
到目前为止,这些是我见过的唯一优势:
WPF ToolBar还有其他好处吗?这些都不适用于我的简单工具栏.
我的目标是创建一个具有新依赖项属性SearchText的自定义TextBlock控件.此属性将包含正则表达式.将使用自定义样式(另一个DP)突出显示TextBlock文本中所有出现的此正则表达式.
我当前的实现涉及清除TextBlock的InlineCollection中的所有Inline对象.然后我使用未突出显示的文本运行TextBlock并运行应用了样式的突出显示文本(此方法不支持直接向TextBlock添加内联,而是必须使用TextBlock.TextProperty).
工作得很好,但有时我在尝试清除Inlines时遇到一个奇怪的异常:InvalidOperationException:"此时无法修改此节点的逻辑子节点,因为正在进行树步行."
这个问题似乎是与此一个.我正在修改TextChanged函数中的内联,但我使用一个标志来避免无限递归编辑.
有关如何构建此自定义控件的任何想法?有一个更好的方法吗?我该如何解决这个异常?
谢谢!
wpf textblock custom-controls invalidoperationexception inlines
在Microsoft的F#示例中,他们使用">>"运算符,如下所示:
test |> Seq.iter (any_to_string >> printfn "line %s");
Run Code Online (Sandbox Code Playgroud)
">>"运算符在这种情况下做了什么?序列中的每个项(在这种情况下是一个数组)是否any_to_string隐式传递?这类似(fun item -> printfn "line %A" item)吗?

我有一个WrapPanel(绿色背景)ListBox(灰色背景).
我试图动态添加StackPanel多次(通过点击给定图像下面的按钮)WrapPanel.
该StackPanel包含Button哪些内容具有"X".StackPanel单击此按钮时,我想删除单个对象(橙色背景).
怎么能解决?
我无法理解HTML中的内联,内联块和块显示选项之间的区别.特别是内联块如何适应.块项目似乎总是出现在自己的行上.内联项似乎不能很好地处理宽度和高度设置.内联块似乎是两者之间的混合,但导致一些古怪的布局情况.这是一个例子:
<style type="text/css">
#container {
height: 100px;
background: tan;
}
#container p {
height: 100px;
background: yellow;
text-align: center;
padding: 0px;
margin: 0px;
width: 29%;
display: inline-block;
}
#container div:first-child {
height: 100px;
display: inline-block;
width: 35%;
padding: 0px;
margin: 0px;
border-top: 2px solid #888;
border-right: 2px solid #888;
}
#container div:last-child {
height: 100px;
display: inline-block;
width: 35%;
padding: 0px;
margin: 0px;
border-left: 2px solid #888;
border-bottom: 2px solid #888;
}
</style>
<body>
<div id="container">
<div class="decorator"></div>
<p>A very …Run Code Online (Sandbox Code Playgroud) wpf ×6
.net ×1
.net-4.5 ×1
c# ×1
css ×1
f# ×1
html ×1
image ×1
inlines ×1
itemscontrol ×1
layout ×1
listbox ×1
mvvm ×1
operators ×1
return-value ×1
scrollview ×1
semantics ×1
stackpanel ×1
textblock ×1
toolbar ×1
wpf-controls ×1
wrappanel ×1
xaml ×1