[英]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.