如何以编程方式选择WPF中的项目TreeView?该ItemsControl模型似乎阻止了它.
因为我是程序员,而不是艺术家或动画师,我在我的应用程序中无法展示WPF的最佳功能.虽然我有按钮的简单动画样本,比如增长,或者在点击时颜色渐渐变亮,但我正在寻找的是一些展示按钮动画和一些展示面板更改动画来展示WPF的最佳功能.通常情况下我会进行更微妙的更改,但在某些情况下,我需要一些东西来真正展示使用WPF而不是WinForms技术的优势.
任何人都可以指向我一些按钮样本和/或面板更改(从一个面板切换到导航中的下一个面板),真正显示WPF并具有令人惊叹的因素.
编辑
请不要指向http://codeproject.com或微软样本,因为我已经仔细阅读了这些内容.事实上,这里是我的RSS阅读器中的WPF站点列表(欢迎其他博客的建议):
Lester的WPF博客, Ask Dr. WPF,Expression Blend and Design,WPF Wonderland,nerdplusart,Karl On WPF,Windows Presentation Foundation SDK,Josh Smith on WPF,Rob Relyea - Xamlified,The Moth.
我想要具体的例子,谢谢......
我只是在WPF中挖了一下,并希望我窗口上的所有元素共享相同的边距.我发现所有能够具有边距的控件都派生自FrameworkElement,所以我尝试了以下方法:
<Window.Resources>
<Style TargetType="{x:Type FrameworkElement}">
<Setter Property="Margin" Value="10" />
</Style>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
而且,这不起作用.我可以将它应用于所有按钮,但不能应用于从Button派生的所有元素.我错过了什么或者这根本不可能吗?
我是唯一一个觉得使用CSS for WPF的人会是个好主意吗?
我在窗口上有一个复选框控件.我想执行一个命令来调用相关视图模型中的方法.我还需要复选框的值.我似乎找不到将命令与复选框关联的方法.有没有人这样做过?
是否有一个插件可以让我为哈德森构建创建一个"趋势"图表,显示该项目的构建时间?
我的任务是加快构建速度,我希望在加快速度的同时展现出一个不错的趋势.
我创建了一个使用150mb内存(私有字节)的ac#应用程序,主要是因为一个很大的字典:
Dictionary<string, int> Txns = new Dictionary<string, int>();
Run Code Online (Sandbox Code Playgroud)
我想知道如何释放这个记忆.我试过这个:
Txns = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)
但它似乎并没有对我的私人字节造成太大影响 - 他们从155mb减少到145mb.有线索吗?
谢谢
-编辑-
好吧,我对这段代码运气不错(它将私有字节减少到50mb),但为什么呢?
Txns.Clear(); // <- makes all the difference
Txns = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)
-编辑-
对于那些说'不要使用GC.collect'的人来说,这是公平的(我不打算辩论,除了说你可以看到我的C背景通过),但它并没有真正回答我的问题:如果我先清除事务列表,为什么垃圾收集器只释放内存?它不应该释放内存,因为字典已被解除引用?
没有在StyleCop帮助手册中找到它,在SO和Google上,所以这里是;)
在StyleCop使用期间,我有一个警告:
SA1121 - UseBuiltInTypeAlias - 可读性规则
代码使用其中一种基本C#类型,但不使用该类型的内置别名.
不应使用类型名称或完全限定类型名称,应始终使用这些类型的内置别名:bool,byte,char,decimal,double,short,int,long,object,sbyte,float,string ,ushort,uint,ulong.
所以String.Empty是错的(取决于上述规则)并且string.Empty是好的.
为什么使用内置别名更好?可以String. Int32,Int64(等)在特殊情况下的代码中复杂化吗?
在style属性上使用这样的表达式可以在Chrome上运行,但在IE8上不起作用
style="width:{{progress}}%"
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/5VDMD/12/ (测试请在文本框中输入一个数字)
针对此问题的任何解决方法?
我有一个ListBox控件,我在网格布局中呈现固定数量的ListBoxItem对象.所以我将ItemsPanelTemplate设置为Grid.
我从后面的代码访问Grid以配置RowDefinitions和ColumnDefinitions.
到目前为止,它都像我期望的那样工作.我有一些自定义的IValueConverter实现,用于返回每个ListBoxItem应该出现的Grid.Row和Grid.Column.
但是我有时会遇到奇怪的绑定错误,我无法弄清楚它们为什么会发生,或者即使它们在我的代码中.
这是我得到的错误:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'ListBoxItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')
谁能解释一下发生了什么?
哦,这是我的XAML:
<UserControl.Resources>
<!-- Value Converters -->
<v:GridRowConverter x:Key="GridRowConverter" />
<v:GridColumnConverter x:Key="GridColumnConverter" />
<v:DevicePositionConverter x:Key="DevicePositionConverter" />
<v:DeviceBackgroundConverter x:Key="DeviceBackgroundConverter" />
<Style x:Key="DeviceContainerStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="Grid.Row" Value="{Binding Path=DeviceId, Converter={StaticResource GridRowConverter}}" />
<Setter Property="Grid.Column" Value="{Binding Path=DeviceId, Converter={StaticResource GridColumnConverter}}" />
<Setter Property="Template"> …Run Code Online (Sandbox Code Playgroud)