未显示设计时数据
本文关键字:数据 显示 | 更新日期: 2023-09-27 18:22:19
Visual Studio 2013 XAML 编辑器不显示我的虚拟数据。如果我设置makeDummy = true
并运行,我会看到相应的数据(两个字段,带有正确的标签(。但它没有显示在设计器中。如何在设计模式下查看虚拟数据?
public partial class InputDialog : Window {
public ObservableCollection<KeyValueViewModel> Items { get; set; }
public InputDialog(){
bool makeDummy = DesignerProperties.GetIsInDesignMode(this);
if (makeDummy) {
Items = new ObservableCollection<KeyValueViewModel>() {
new KeyValueViewModel() {Key = "Top:"},
new KeyValueViewModel() {Key = "Middleton:"}
};
}
InitializeComponent();
}
private void CancelButton_Click(object sender, RoutedEventArgs e) { DialogResult = false; }
private void OkButton_Click(object sender, RoutedEventArgs e) { DialogResult = true; }
}
请忽略属性、接口继承、事件和方法 - 它们只是实现了INotifyPropertyChanged
所需的行为:
[NotifyPropertyChangedAspect]
public class KeyValueViewModel : IRetrievableNotifyPropertyChanged{
public string Value { get; set; }
public string Key { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
public PropertyChangedEventHandler GetPropertyChangedEventHandler() { return PropertyChanged; }
}
这是 XAML:
<Window x:Class="Dre.InputDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
d:DataContext="{Binding RelativeSource={RelativeSource Self}}"
FocusManager.FocusedElement="{Binding ElementName=FieldsContainerGrid}"
Height="165" Width="341">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="127*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Name="FieldsContainerGrid" Margin="20,20,20,0" Grid.Row="0" MinWidth="100" MinHeight="50">
<ListView ItemsSource="{Binding Items}">
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel>
<Label Content="{Binding Key}" Background="Red"></Label>
<TextBox Text="{Binding Value}"></TextBox>
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
<StackPanel Margin="5" Grid.Row="1" HorizontalAlignment="Center" Orientation="Horizontal">
<Button Margin="5" Width="100" Height="20" Click="OkButton_Click" IsDefault="True">
Save
</Button>
<Button Margin="5" Width="100" Height="20" Click="CancelButton_Click" IsCancel="True">
Cancel
</Button>
</StackPanel>
</Grid>
</Window>
设计器实例化基类 ( Window
(,而不是代码隐藏类。
最简单的解决方案是创建一个静态虚拟模型属性,然后写入
d:DataContext="{x:Static local:DummyModel.Instance}"