0
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'没有什么可显示的,'InputDialog'永远不会被设计者创建? – Tar 2014-09-18 16:54:28
确切地说, – SLaks 2014-09-18 16:57:39
让我明白这一点 - 设计者创建了“纯粹的”Window实例,它根据“XAML”('ListView','Button',等等......)?那么'DesignerProperties.GetIsInDesignMode(this)'有什么用? – Tar 2014-09-18 17:02:09