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綁定中設置十進制屬性的默認值
- 4. 顯示綁定屬性名稱,而不是財產WPF XAML設計值
- 5. 如何在設計時顯示自定義屬性的值?
- 6. 如何在WPF中以編程方式設置clr-namespace屬性
- 7. 以編程方式設置WPF屬性
- 8. 如何在WPF中設置綁定?
- 9. 如何在以後設置屬性值
- 10. 如何在設計視圖中顯示自定義屬性
- 11. 在XAML中指定WPF的數據綁定屬性的設計時值
- 12. 在屬性設置中綁定祖先
- 13. 如何設置計算屬性的值
- 14. 如何在mvvm模式中綁定wpf usercontrol中的屬性
- 15. 如何以編程方式在Java中設置屬性屬性?
- 16. 如何在設置中顯示特定屬性
- 17. 如何在MVVM模式中綁定StrokeDashArray屬性wpf
- 18. 在屬性屬性中設置WPF中的樣式
- 19. 設置模特屬性值
- 20. WPF /樣式:模板元素設置屬性值
- 21. 在WPF中設置和顯示屬性UserControl
- 22. 如何在設計時顯示錶單的自定義屬性?
- 23. 從另一個綁定屬性的setter中設置綁定屬性的值
- 24. 如何設置屬性值
- 25. WPF中的設計模式
- 26. 如何在wpf中設置按鈕樣式的Data屬性?
- 27. 如何在樣式中設置綁定?
- 28. 如何在WPF的綁定中僅使用xaml設置值?
- 29. 在綁定之前設置WPF Usercontrol屬性
- 30. WPF根據自定義屬性的值設置CustomControl樣式
在運行時不會這樣做嗎? – Jens 2010-11-30 13:57:00