VS 2010解决方案和Silverlight项目构建良好,然后:
在我使用Expression blend 4添加新的样本设计数据后,一切看起来都很好,您在EB 4中看到添加的样本数据,您也可以在VS 2010设计器中看到数据.
关闭EB 4,下一个VS 2010版本给我这个错误:
Error 7 XAML Namespace http://schemas.microsoft.com/expression/blend/2008 is not resolved. C:\Code\source\...myview.xaml
Run Code Online (Sandbox Code Playgroud)
和:
Error 12 Object reference not set to an instance of an object. ... TestSampleData.xaml
Run Code Online (Sandbox Code Playgroud)
当我打开TestSampleData.xaml时,我发现用于定义样本数据的类的命名空间无法识别.
但是这个命名空间和类本身存在于同一个项目中!
如果我从MyView.xaml中删除设计数据:
d:DataContext="{d:DesignData /SampleData/TestSampleData.xaml}"
Run Code Online (Sandbox Code Playgroud)
它构建正常,这次可以识别TestSampleData.xaml中的命名空间吗?然后如果添加:
d:DataContext="{d:DesignData /SampleData/TestSampleData.xaml}"
Run Code Online (Sandbox Code Playgroud)
我再次在VS 2010设计器示例数据中看到,但是下一次构建失败,我再次看到工作室无法在包含示例数据的TestSampleData.xaml中找到命名空间.
这个循环让我发疯.我在这里遗漏了什么,是不是可以让你的类在同一个项目中定义样本设计数据你有MyView.xaml视图?
欢呼Valko
如何在WP7中使用Blend在不同的视觉状态下设置不同的本地化字符串而不使用任何代码?
我可以在不同的视觉状态下设置不同的非本地化字符串(虽然它会闪烁).这有效,但本地化字符串怎么样?
如果我在Blend中使用数据绑定更改字符串,Blend只会覆盖Base状态下的数据绑定,而不是我正在录制的实际状态.
编辑:
这是我本地化我的字符串的方式:
我有一个名为的资源文件AppPresources.resx.然后我会在代码中执行此操作:
// setting localized button title
mainButton.Content = AppResources.MainButtonText;
Run Code Online (Sandbox Code Playgroud)
然后我有一个GlobalViewModelLocator来自MVVM Light Toolkit的具有以下属性的数据绑定.
private static AppResources _localizedStrings;
public AppResources LocalizedStrings
{
get
{
if (_localizedStrings == null)
{
_localizedStrings = new AppResources();
}
return _localizedStrings;
}
}
Run Code Online (Sandbox Code Playgroud)
并在xaml文件中:
<Button x:Name="mainButton" Content="{Binding LocalizedStrings.MainButtonText, Mode=OneWay, Source={StaticResource Locator}}" ... />
Run Code Online (Sandbox Code Playgroud) 找到Expression Blend/WPF设计师执行合同工作的一些建议是什么?我认为(本地)自由设计师可能是最合理的价格,但我甚至不知道从哪里开始.
作为额外的背景,我位于美国中西部地区,设计师并不那么普遍.
我正在使用表达式blend和c#来创建一个silverlight站点.我想创建一个有许多地区的世界地图.点击区域颜色会发生变化.我已经创建了这些地区.
有谁知道这是怎么做到的吗?
谢谢
Blend支持显示样式资源的图形表示,并允许您选择要查看或修改的活动属性/事件触发器.但是,由DataTriggers控制视觉元素是很常见的.是否有可能告诉设计师它应该将DataTrigger视为"活动",以便可以在设计器中查看其视觉变化?
例:
<Style x:Key="MyBorder" TargetType="Border">
<Setter Property="CornerRadius" Value="5" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsRandomPropertyActive}" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FFFF8935" Offset="0" />
<GradientStop Color="#FFFF610C" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
在设计器中,这只显示一个空框,因为默认样式不定义特定的视觉方面.反正有没有告诉设计师我希望它假设IsRandomPropertyActive是真的,并显示适当的样式?
这可能有点像,但假设我想在ViewModel中使用Moq来创建一些设计时数据,如下所示:
public class SomeViewModel
{
public SomeViewModel(ISomeDependency dependency)
{
if (IsInDesignMode)
{
var mock = new Mock<ISomeDependency>();
dependency = mock.Object; // this throws!
}
}
}
Run Code Online (Sandbox Code Playgroud)
模拟可以设置为做一些事情,但你明白了.
我的问题是,在Blend的设计时,这段代码抛出一个InvalidCastException,消息沿着"无法将类型为'Castle.Proxies.ISomeDependencyProxy2b3a8f3188284ff0b1129bdf3d50d3fc'的对象强制转换为'ISomeDependency'." 虽然这不一定看起来与Moq相关但与Castle相关,我希望Moq示例有帮助;)
知道为什么会这样吗?
谢谢!
我想知道是否有人知道Blend/Silverlight 4的任何好(免费)行为
具体来说,我正在寻找一种行为,我可以放在TextBlock上使其水平滚动或行为将"闪烁"TextBlock中的文本(闪烁文本).但我很想知道你一直在使用或了解的任何行为.
举个例子,我有一个非常基本的"闪烁文本"行为
public class FlashTextBehavior : Behavior<TextBlock>
{
Timer flashTimer;
public FlashTextBehavior()
{
}
protected override void OnAttached()
{
base.OnAttached();
flashTimer = new Timer(new TimerCallback((o) =>
{
Dispatcher.BeginInvoke(() =>
{
if (AssociatedObject.Visibility == Visibility.Visible)
AssociatedObject.Visibility = Visibility.Collapsed;
else
AssociatedObject.Visibility = Visibility.Visible;
});
}), null, 0, 750);
}
protected override void OnDetaching()
{
if (flashTimer != null)
flashTimer.Dispose();
base.OnDetaching();
}
}
Run Code Online (Sandbox Code Playgroud)
当然它可以改进,但我真的对其他人想出的东西感兴趣.
我觉得我仍然看到很多指导和建议,说明视图优先方法是在应用程序中获得Blendability的最佳方法.但是,使用d:DataContext,d:DesignData和d:DesignInstance,无论您的视图和视图模型如何连接在一起,Blendability的问题都不容易解决?
使用DesignInstance,您只需选择要在设计器中使用的具体ViewModel类型,就好像您已经拥有了视图优先组合.实际上,使用DesignInstance实际上可以比执行IsInDesignMode后空翻更好地分离关注点,或者只为真实视图模型中的设计支持创建默认构造函数 - 您可以从viewmodel类型继承或从公共接口类型继承以创建简单的"设计器" viewmodel,它完全受限于设计师.使用DesignData,您甚至不必这样做:您可以在XAML中以声明方式创建伪视图模型.
确实,在进行上述活动时需要很小的前期成本,但结果实际上比通过将设计数据与真实视图模型混合得到的结果更清晰.有什么我想念的吗?为什么Blendability仍然是一个如此大的问题?
我有以下样本数据,这很好地解决了......
<SampleData:DashboardViewModel xmlns:SampleData="clr-namespace:MyApp.ViewModels">
<SampleData:DashboardViewModel.Employees>
<SampleData:EmployeeViewModel FirstName="Aaron" "Adams" />
<SampleData:EmployeeViewModel FirstName="Billy" "Bob" />
<SampleData:EmployeeViewModel FirstName="Charlie" "Chaplin" />
</SampleData:DashboardViewModel.Employees>
</SampleData:DashboardViewModel>
Run Code Online (Sandbox Code Playgroud)
但是,我发现能够重用该样本员工列表而不是每次都重新输入它是有用的.我无法弄清楚如何重用该列表.基本上,我想要另一个包含该员工列表的SampleData文件(SampleEmployees.xaml),然后能够将其包含在我的其他样本中......
<SampleData:DashboardViewModel xmlns:SampleData="clr-namespace:MyApp.ViewModels">
<SampleData:DashboardViewModel.Employees ... /> <!-- What goes in there? -->
</SampleData:DashboardViewModel>
<SampleData:OtherViewModel xmlns:SampleData="clr-namespace:MyApp.ViewModels">
<SampleData:OtherViewModel.Employees ... /> <!-- What goes in there? -->
</SampleData:OtherViewModel>
Run Code Online (Sandbox Code Playgroud)
另外,如何在另一个XAML文件中单独创建列表?
视图模型:
public class DashboardViewModel : NotificationObject
{
public class DashboardViewModel(IDataService dataService)
{
InternalEmployees = new ObservableCollection<EmployeeViewModel>(dataService.GetEmployees());
Employees = new ReadOnlyObservableCollection<EmployeeViewModel>(InternalEmployees);
}
private ObservableCollection<EmployeeViewModel> InternalEmployees { get; set; }
public ReadOnlyObservableCollection<EmployeeViewModel> Employees { get; private set; } …Run Code Online (Sandbox Code Playgroud) 我是WinRT和Blend的新手,我需要在WinRT应用程序中绘制数字1,2等绘图效果.要求就像应用程序将绘制数字.
任何帮助将非常感激.
提前致谢.
expression-blend ×10
wpf ×5
xaml ×5
silverlight ×4
mvvm ×2
behavior ×1
blendability ×1
c# ×1
datatrigger ×1
design-time ×1
localization ×1
resources ×1
sample-data ×1