簡體   English   中英

如何在WPF中創建帶參數的模板?

[英]How to create a template with parameters in WPF?

我有 3 個列表視圖。 它們非常相似。 唯一的區別是它們的 ItemsSource 綁定到不同的變量。 有沒有辦法創建一個帶有未知 ItemsSource 的模板列表視圖,我可以傳遞一個參數來填充那個 ItemsSource?

我的代碼是這樣的:

<ListView Name="View1" ItemsSource={"Binding Student1"}>
    <TextBlock Text={"Binding Name"}/>
</ListView>

<ListView Name="View2" ItemsSource={"Binding Student2"}>
    <TextBlock Text={"Binding Name"}/>
</ListView>

<ListView Name="View3" ItemsSource={"Binding Student3"}>
    <TextBlock Text={"Binding Name"}/>
</ListView>

編輯:我可能以錯誤的方式表達了我的問題。 我想要一個名為“StudentView”的單獨用戶控件視圖:

<ListView ItemsSource=Parameter1>
    <TextBlock Text={"Binding Name"}/>
</ListView>

所以在我的主 window 中,我可以這樣做:

<local:StudentView Parameter1={"Binding Student1"}/>

您在考慮模板方面走在正確的軌道上

您正在尋找的是一種叫做 ControlTemplate 的東西。

然后,您的ControlTemplate將以 ListView 控件為目標,並使用關鍵字TemplateBinding從您的 ListView 傳遞 ItemsSource 綁定

您會希望將其添加為 window 資源,如下所示。

<Window.Resources>
    <ControlTemplate x:Key="ListViewTemplate" TargetType="ListView">
        <ListView ItemsSource="{TemplateBinding ItemsSource}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}"/>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </ControlTemplate>
</Window.Resources>

這將使您能夠在ListView控件上使用此模板,如下所示

<ListView Template="{StaticResource ListViewTemplate}" ItemsSource="{Binding PersonList}"/>
<ListView Template="{StaticResource ListViewTemplate}" ItemsSource="{Binding PersonList1}"/>
<ListView Template="{StaticResource ListViewTemplate}" ItemsSource="{Binding PersonList2}"/>

希望這能給你你想要的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM