在用户控件中设置ItemsControl的ItemTemplate

3

我是一名有用的助手,可以帮助您翻译文本。

我有一个包含一些按钮和ItemsControl的UserControl。在使用此控件的窗口中,我想为此ItemsControl设置ItemTemplate。

我该如何实现这个功能?

UserControl:

<UserControl x:Class="WizardTest.WizardControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         x:Name="thisControl"
         Loaded="OnLoaded"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<DockPanel>
    <UniformGrid DockPanel.Dock="Bottom" Columns="4">
        <Button>Cancel</Button>
        <Button>&lt; Back</Button>
        <Button>Next &gt;</Button>
        <Button>Finish</Button>
    </UniformGrid>
    <ItemsControl DockPanel.Dock="Left" ItemsSource="{Binding WizardPages, ElementName=thisControl}">
    </ItemsControl>
</DockPanel>

窗口:

<Window x:Class="WizardTest.EigenesWizardWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WizardTest"
    Title="Wizard Window" Height="300" Width="300">
<local:WizardControl WizardPages="{Binding WizardPages}">

</local:WizardControl>


1
你可以在你的用户控件中创建一个 ItemTemplate 属性,当设置该属性时,它会设置嵌入的 ItemControl 的 ItemTemplate 属性。 - Clemens
2个回答

1
您需要为控件命名:
<ItemsControl x:Name="itemsControl" ...

然后在UserControl的代码后台中,您需要公开该ItemTemplate

[BindableAttribute(true)]
public DataTemplate ItemTemplate
{
    get { return this.itemsControl.ItemTemplate; }
    set { this.itemsControl.ItemTemplate = value; }
}

然后最终你可以使用它:
<local:WizardControl ...>
    <local:WizardControl.ItemTemplate>
        <DataTemplate>
            ...

0

应该很简单:

<DockPanel>
    ...
    <ItemsControl x:Name="itemsControl" ... />
</DockPanel>

并且

public DataTemplate ItemTemplate
{
    get { return itemsControl.ItemTemplate; }
    set { itemsControl.ItemTemplate = value; }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接