4
A
回答
7
在Visual Studio 2010中获取设计时数据的一种简单方法是使用design-datacontext。使用Window和ViewModel的简短示例,对于DataContext,将在设计模式中使用d:DataContext,并在运行时使用StaticResource。您也可以使用单独的ViewModel进行设计,但在此示例中,我将对两者使用相同的ViewModel。
<Window ...
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DesignTimeData"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:MyViewModel,
IsDesignTimeCreatable=True}">
<Window.Resources>
<local:MyViewModel x:Key="MyViewModel" />
</Window.Resources>
<Window.DataContext>
<StaticResource ResourceKey="MyViewModel"/>
</Window.DataContext>
<StackPanel>
<TextBox Text="{Binding MyText}"
Width="75"
Height="25"
Margin="6"/>
</StackPanel>
</Window>
而在ViewModels属性MyText中,我们检查是否处于设计模式,在这种情况下,我们返回其他内容。
public class MyViewModel : INotifyPropertyChanged
{
public MyViewModel()
{
MyText = "Runtime-Text";
}
private string m_myText;
public string MyText
{
get
{
// Or you can use
// DesignerProperties.GetIsInDesignMode(this)
if (Designer.IsDesignMode)
{
return "Design-Text";
}
return m_myText;
}
set
{
m_myText = value;
OnPropertyChanged("MyText");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Designer.cs,被发现here,看起来像这样
public static class Designer
{
private static readonly bool isDesignMode;
public static bool IsDesignMode
{
get { return isDesignMode; }
}
static Designer()
{
DependencyProperty prop =
DesignerProperties.IsInDesignModeProperty;
isDesignMode =
(bool)DependencyPropertyDescriptor.
FromProperty(prop, typeof(FrameworkElement))
.Metadata.DefaultValue;
}
}
-3
您可以将您的内容包裹在另一个属性中,并测试该值是否为空。在这种情况下,返回你想要的假值。
private string _content;
public string Content
{
get
{
if (_content != "") return _content;
else return "FAKE";
}
set { _content= value; }
}
2
您可以使用DesignMode属性,以找出是否你在设计时(http://msdn.microsoft.com/en-us/library/c58hb4bw(vs.71).aspx)
有进一步的想法,但就如何在这一问题做没有真正的结论:What approaches are available to dummy design-time data in WPF?
3
可以使用FallbackValue属性显示在设计时的东西为好。但是,如果绑定失败,这也将是运行时的值。
<TextBox Text="{Binding MyText, FallbackValue='My Fallback Text'}"/>
相关问题
- 1. WPF - 如何根据绑定属性值设置行的样式?
- 2. 在模板中设置绑定属性
- 3. 显示绑定属性名称,而不是财产WPF XAML设计值
- 4. 如何在设计时显示自定义属性的值?
- 5. 以编程方式设置WPF属性
- 6. 如何在WPF中设置绑定?
- 7. 如何在以后设置属性值
- 8. 在XAML中指定WPF的数据绑定属性的设计时值
- 9. 如何设置计算属性的值
- 10. 如何在设置中显示特定属性
- 11. 如何通过XAML中的样式设置绑定属性?
- 12. 设置模特属性值
- 13. 如何在设计时显示表单的自定义属性?
- 14. 在属性属性中设置WPF中的样式
- 15. 在WPF中设置和显示属性UserControl
- 16. WPF /样式:模板元素设置属性值
- 17. 如何设置属性值
- 18. 如何在样式中设置绑定?
- 19. 如何在WPF的绑定中仅使用xaml设置值?
- 20. 如何在wpf中设置按钮样式的Data属性?
- 21. WPF中的设计模式
- 22. WPF通过绑定设置可见性
- 23. WPF的自定义设计时属性
- 24. 如何在Android中以编程方式设置样式属性?
- 25. 表在显示属性设置为“块”
- 26. 显示属性设置在Magento
- 27. 如何在视图中设置ViewBag中模型属性的值?
- 28. 如何设置设计时属性的默认值?
- 29. WPF复选框绑定 - 在属性设置改变值不会影响UI
- 30. C#WPF UserControl设置属性
在运行时不会这样做吗? – Jens 2010-11-30 13:57:00