我有一个datagrid绑定到可观察的对象集合。 我想要做的是有一个button,将执行代表被点击的button行的对象的方法。 所以我现在拥有这样的东西: <DataGridTemplateColumn Header="Command"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Name="cmdCommand" Click="{Binding Command}" Content="Command"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> 哪个不起作用,并报告以下错误: Click =“{绑定命令}”无效。 “{绑定命令}”不是有效的事件处理程序方法名称。 只有生成的或代码隐藏类的实例方法才是有效的。 我已经看过命令绑定,但看起来它只是最终转到一个外部命令,而不是绑定到该行的对象。 我已经在代码后面使用事件处理程序工作,然后将其路由到绑定到选定行的项目(因为单击button时选中该行),但似乎是差劲的处理方式,我认为我'我只是在这里错过了一些
我的原型显示包含由缩略图表示的“页面”的“文档”。 每个文档可以有任意数量的页面。 例如,可能有1000个文档,每个5个页面,或者5个文档每个1000个页面,或者中间的某个位置。 文件不包含其他文件。 在我的xaml标记中,我有一个ListBox ,其ItemsTemplate引用一个innerItemsTemplate也有一个ListBox 。 我想要2级选定的项目,以便我可以在文档或页面上执行各种操作(删除,合并,移动到新位置等)。 innerItemsTemplate ListBox使用一个WrapPanel作为ItemsPanelTemplate。 对于每个页面数量较多(比如10000个文档,每页5个页面)的大量文档,滚动效果非常好,这得益于VirtualizingStackPanel的UI虚拟VirtualizingStackPanel 。 但是,如果我有大量的页面,则会出现问题。 一个1000页的文档一次只能显示大约50个(无论在屏幕上),而当我向下滚动时,外部ListBox移动到下一个文档,跳过950页左右,这是不可见的。 随着这一点,没有VirtualzingWrapPanel所以应用程序内存真的增加。 我想知道我是否正在以正确的方式进行,特别是因为这很难解释! 我希望能够显示10000个文件,每个1000页(只显示任何适合的屏幕),使用UI虚拟化,也顺利滚动。 我怎样才能确保滚动浏览文档中的所有页面,然后显示下一个文档,并保持UI虚拟化? 滚动条似乎只移动到下一个文档。 代表“文件”和“页面”似乎是合乎逻辑的 – 用我目前在ListBox使用ListBox ListBox ? 我非常感谢你有任何想法。 谢谢。
我在哪里可以find一个像WPF中的C#计时器控件的控件?
如何处理Keyboard.KeyDown事件而不使用代码隐藏? 我们正在尝试使用MVVM模式,并避免在代码隐藏文件中编写事件处理程序。
例如,当文本框为空时,Facebook在search文本框中有一个“search”提示文本。 如何用WPF文本框实现这一点?
我刚开始学习WPF的MVVM模式。 我碰壁了: 当你需要显示一个OpenFileDialog时,你做了什么? 下面是一个示例UI,我试图使用它: 当浏览button被点击时,应该显示一个OpenFileDialog。 当用户从OpenFileDialog中select一个文件时,文件path应该显示在文本框中。 我怎样才能用MVVM做到这一点? 更新 :我怎样才能做到这一点与MVVM,使其unit testing能力? 下面的解决scheme不适用于unit testing。
我需要使控件出现在所有其他控件之上,所以它会部分覆盖它们。
我拥有的是具有IsReadOnly属性的对象。 如果这个属性是真的,我想将button(例如)上的IsEnabled属性设置为false。 我想相信我可以像IsEnabled="{Binding Path=!IsReadOnly}"一样轻松地做到这一点,但是WPF不能。 我是降级到必须通过所有的样式设置? 只是把一个布尔设置为另一个布尔的倒数而已,太罗嗦了。 <Button.Style> <Style TargetType="{x:Type Button}"> <Style.Triggers> <DataTrigger Binding="{Binding Path=IsReadOnly}" Value="True"> <Setter Property="IsEnabled" Value="False" /> </DataTrigger> <DataTrigger Binding="{Binding Path=IsReadOnly}" Value="False"> <Setter Property="IsEnabled" Value="True" /> </DataTrigger> </Style.Triggers> </Style> </Button.Style>
我试图得到输出显示我的机器上当前打开的文档,但无论如何它返回NULL。 StringCollection values = new StringCollection(); var proc = new Process { StartInfo = new ProcessStartInfo { FileName = "openfiles.exe", Arguments = "/query /FO CSV /v", UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true } }; proc.Start(); while (!proc.StandardOutput.EndOfStream) { string line = proc.StandardOutput.ReadLine(); values.Add(line); } foreach (string sline in values) MessageBox.Show(sline); 编辑: 在进一步的审查中,我看到我得到一个例外问题。 […]
我使用Bing地图WPF控件创build了一个WPF应用程序。 我想只能截图Bing地图控件。 使用这个代码来制作屏幕截图: // Store the size of the map control int Width = (int)MyMap.RenderSize.Width; int Height = (int)MyMap.RenderSize.Height; System.Windows.Point relativePoint = MyMap.TransformToAncestor(Application.Current.MainWindow).Transform(new System.Windows.Point(0, 0)); int X = (int)relativePoint.X; int Y = (int)relativePoint.Y; Bitmap Screenshot = new Bitmap(Width, Height); Graphics G = Graphics.FromImage(Screenshot); // snip wanted area G.CopyFromScreen(X, Y, 0, 0, new System.Drawing.Size(Width, Height), CopyPixelOperation.SourceCopy); […]