0

假设我们有一个 Person 模型:

public class Person
{
    public long Id { get; set; }
    public string Name { get; set; }
    public City City { get; set; }
}

我们有一个城市模型:

public class City
{
    public long Id { get; set; }
    public long ZipCode { get; set; }
    public string Name { get; set; }
}

然后我们有一个像这样的 WPF/XAML 视图:

<Window
x:Class="WpfIssues.MainWindow"
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:local="clr-namespace:WpfIssues"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<ItemsControl Margin="20">
    <d:ItemsControl.ItemsSource>
        <x:Array Type="{x:Type local:Person}">
            <local:Person Name="Thomas" Id="1" />
        </x:Array>
    </d:ItemsControl.ItemsSource>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="20" />
                    <ColumnDefinition Width="150" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding Id}" />
                <TextBlock Grid.Column="1" Text="{Binding Name}" />
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

所有这些都为我提供了带有单个 Person 项的 ItemsControl 的设计时视图。

但是我不知道如何在 Person 类的City属性上设置设计时属性值——比如ZipCodeCity

任何人?

4

2 回答 2

1

您可以使用标签语法:

<local:Person Name="Thomas" Id="1">
  <local:Person.City>
    <local:City Id="10" ZipCode ="zip"/>
  </local:Person.City>
</local:Person>

或具有资源的属性语法(通常,仅设计时值不太实用)

<ItemsControl Margin="20">
    <ItemsControl.Resources>
        <local:City Id="10" ZipCode ="zip" x:Key="City10"/>
    </ItemsControl.Resources>
    <d:ItemsControl.ItemsSource>
        <x:Array Type="{x:Type local:Person}">
            <local:Person Name="Thomas" Id="1" City="{StaticResource City10}"/>
        </x:Array>
    </d:ItemsControl.ItemsSource>
于 2021-02-19T08:51:27.443 回答
0

这是典型的 - 在 SO 上发布后 10 秒 - 我找到了解决方案:

<Window
x:Class="WpfIssues.MainWindow"
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:local="clr-namespace:WpfIssues"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<ItemsControl Margin="20">
    <d:ItemsControl.ItemsSource>
        <x:Array Type="{x:Type local:Person}">
            <local:Person Name="Thomas" Id="1">
                <local:Person.City>
                    <local:City Name="Holte" />
                </local:Person.City>
            </local:Person>
        </x:Array>
    </d:ItemsControl.ItemsSource>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="20" />
                    <ColumnDefinition Width="150" />
                    <ColumnDefinition Width="150" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding Id}" />
                <TextBlock Grid.Column="1" Text="{Binding Name}" />
                <TextBlock Grid.Column="2" Text="{Binding City.Name}" />
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
于 2021-02-19T08:54:15.143 回答