我希望从datatemplate生成的元素看起来有所不同,具体取决于模型中的某些属性.例如,我希望以各种颜色显示文本,或者为每个生成的元素显示不同的图像或路径绘图.我知道如何一般地做到这一点,但我正在寻找一种解决方案,允许设计师在不触及代码的情况下编辑Expression Blend中的视觉细节.例如最简单的解决方案:
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding MyImageSource}"/>
<TextBlock Width="200" Text="{Binding MyText}" Forecolor="{Binding MyColor}"></TextBox>
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
其中'MyImageSource'和'MyColor'是项目模型(ImageSource和Brush类型)的属性,不能满足我的需求,因为我不想分配这些值.我希望设计师这样做.我的模型不是'MyImageSource'和'MyColor'属性,而是具有类型为enum或string(或其他类型)的'ItemType'或'ItemStyle'属性.我不是在寻找"宗教"MVVM的严格解决方案.我唯一的要求是避免设计师等待我按照他的指示纠正代码,例如"将列表Y中的X类型的项目颜色更改为#FFAACC",因为它似乎在某种程度上违反了SoC规则.
编辑(根据答案):
我找到了bendewey 在这里描述的类似解决方案- 它需要使用ItemsSource属性为控件派生自定义控件.为每种元素类型使用不同数据模板的想法很简洁,但在我看来,它涵盖了我们想要为每个项目生成完全不同的可视元素的情况.当元素仅在某些颜色和图像上有所不同(并且除此之外还包含许多常见元素),那么为每个元素类型创建单独的数据模板将导致不必要的代码(xaml)重复.在这种情况下,弗拉德的解决方案更适合.除了两个人之外还有其他技术吗?
我有visual Studio 2008.
我注意到我使用Visual Studio制作WPF应用程序.这是否意味着它可以完成Expression Studio的工作?
我将安装Visual Studio 2010.这是否取消了Expression Studio的必要性?
我在使用Expression Blend 4时遇到了一个奇怪的问题.我一直在使用Blend 4和Visual Studio 2010一段时间而没有发生任何事故(除了超常频繁的崩溃).现在我们的图形设计师想要开始使用Blend来做一些修饰工作.
我们能够让Blend在他的计算机上编译解决方案.不幸的是,当我们尝试打开任何XAML文件时,我们从设计者那里得到错误,其中通过合并资源字典和附加属性包含的资源无法识别.基本上,即使Blend正在编译没有错误的解决方案,也好像看不到构建工件.
我们的设置中唯一奇怪的是我们的解决方案包含多个构建配置,您无法在Blend中更改构建配置.
为什么你认为Blend的设计者无法加载它构建的文件?
我正试图将文本置于PassWord框中:
在Blend中,对齐的Text属性都被禁用.还有另一种方法吗?
谢谢您的帮助.
尝试在Expression Blend 4的设计视图中加载用户控件xaml文件时出现上述错误.xaml本身在VS 2010中成功运行,我可以在混合中查看xaml,但不能在设计视图中查看.在"xaml视图"中查看xaml时,UserControl元素以红色下划线.有谁碰到这个问题?
对于在网页中使用Microsoft Expression blend开发Silverlight应用程序,我仍然有点新鲜.
我使用Expression Blend 4.0构建了一个故事板.我希望它能在页面加载时自动在浏览器中启动,但我无法弄明白.
我已经在网上搜索了答案,但到目前为止,我发现的唯一答案似乎是早期版本的Expression Blend,而且我的环境太不同了,无法弄清楚如何将它们应用于Expression Blend 4.0.
我感谢您提供的任何帮助.
我有一个WPF应用程序,在垂直堆栈面板中有一系列按钮,类似于DVR菜单的样子.我想出了如何制作一个动画,当每个新的菜单页面被加载时,按钮/控件全部{unfade,fall,deblur,whatever}成为现实,这很好但有点过于统一.我真正喜欢的是根据每个按钮的位置或tabstop属性,在每个按钮上启动动画.因此,例如顶部按钮将是第一个开始,然后是下一个等,直到底部按钮,可能在每次启动之间延迟50毫秒(但是这样第一个按钮不必在第二个按钮之前完成)开始).当然,我可以为每个按钮制作不同的动画,但我希望有一个更优雅的解决方案.我没有看到将任何控件的属性加载到故事板的BeginTime中的方法.有没有一种很好的方法只使用XAML,或者像这样的东西需要代码隐藏?如果是后者,是否可以将其打包成一个行为并且能够在以后以声明方式加载,或者我是否永远坚持使用命令式代码?
我在WPF 4.0中插入InvokeCommandAction(Blend 4 SDK)时遇到问题.用户控件没有显示,我有一些例外.(登录底部)没有我的xaml代码中的行,没有问题(但没有事件触发器).
我在外部灯光项目中测试了这部分代码,它的工作非常完美!也许InvokeCommandAction与may app中的东西不兼容,但是什么?
<UserControl x:Class="Project.Views.Menu.TestView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:Menu="clr-namespace:Project.ViewModels.Menu"
mc:Ignorable="d"
x:Name="test"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.DataContext>
<Menu:TestViewModel />
</UserControl.DataContext>
<Grid>
<ListBox x:Name="listBox" Width="200"
MaxHeight="128" SelectionMode="Single" Margin="0">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding TestCommand, Mode=OneWay}" CommandParameter="{Binding SelectedItem, ElementName=listBox}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<ListBoxItem>blabla1</ListBoxItem>
<ListBoxItem>blabla2</ListBoxItem>
<ListBoxItem>blabla3</ListBoxItem>
<ListBoxItem>blabla4</ListBoxItem>
</ListBox>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
我记录了这些错误,但我不明白:
ERROR 2011-07-26 15:18:47 – La référence d'objet n'est pas définie à une instance d'un objet. PresentationFramework à System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, …
我使用Blend为TextBox创建了一个模板的副本.我需要在ValidationErrorElement中编辑Path.Data.我怎么做?我可以看到XAML,但我无法弄清楚如何使用设计器编辑这个路径数据.

我对Expression Blend 4有疑问.
我想创建一个简单的组件出现动画,当组件的高度从0变为100%,而它下面的组件向下移动以分配所需的空间.
我的问题是只允许以像素为单位的静态值来创建这种类型的动画.但我不知道我的控制高度(实际上,它是内容和内容长度可能不同的textBox),我无法设置Height最后一个关键帧的值Auto.
我该怎么做才能完成这项任务?
提前致谢.
expression-blend ×10
xaml ×6
silverlight ×5
wpf ×3
.net ×1
animation ×1
build ×1
c#-4.0 ×1
data-binding ×1
design-view ×1
designer ×1