我有一个简单的 View 模型,其中包含一个单元列表,这在运行时显示良好,但是我希望该列表在设计时显示。根据围绕我的一些问题,我尝试了以下方法,但是它没有用,请有人帮忙吗?
//In resources
<local:MainViewModel x:Key="DesignViewModel"/>
主持人
<ItemsControl ItemsSource="{Binding Units}" d:DataContext="{Binding Source={StaticResource DesignViewModel}}" Background="Transparent">
View 模型
public MainViewModel()
{
Units = new ObservableCollection<UnitViewModel>();
Units.Add(new UnitViewModel
{
ID = "1",
Degrees = "80",
IsMaster = true
});
for (int i = 0; i < 10; i++)
Units.Add(new UnitViewModel
{
ID = "2",
Degrees = "40",
IsMaster = false
});
}
}
最佳答案
您可以共享UnitViewModel的代码定义吗?请记住,绑定(bind)仅适用于属性,不适用于打开的字段。我尝试了您的代码,并为Units创建了一些基本的struct字段。那些没用。所以,我猜想也许您正在使用字段而不是属性:
public class MainViewModel
{
public MainViewModel()
{
Units = new ObservableCollection<UnitViewModel>();
Units.Add(new UnitViewModel
{
ID = "1",
Degrees = "80",
IsMaster = true
});
for (int i = 0; i < 10; i++)
Units.Add(new UnitViewModel
{
ID = "2",
Degrees = "40",
IsMaster = false
});
}
public ObservableCollection<UnitViewModel> Units {
get;
set;
}
}
public struct UnitViewModel
{
public string ID { get; set;}
public string Degrees { get; set;}
public bool IsMaster { get; set;}
}
}
我最终尝试了此代码,没有任何问题。
<Window
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" x:Class="WpfApplication1.MainWindow"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" d:DesignWidth="704">
<Window.Resources>
<local:MainViewModel x:Key="DesignViewModel" />
<DataTemplate x:Key="DataTemplate2">
<Grid >
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding ID}" VerticalAlignment="Top"/>
</Grid>
</DataTemplate>
</Window.Resources>
<Grid d:DataContext="{StaticResource DesignViewModel}">
<ItemsControl HorizontalAlignment="Left" Height="450" VerticalAlignment="Top" Width="632" ItemsSource="{Binding Units}"
/>
</Grid>
</Window>
添加一个ItemTemplate来正确设置数据表示的样式。
关于c# - WPF设计时间 View 模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15765986/