[英]Binding ComboBox data to ListView Data in wpf
我正在嘗試在列表視圖內部生成一個包含組合框的WPF模態。 組合框將動態生成並需要綁定。
<ListView Height="291" HorizontalAlignment="Left" Margin="12,196,0,0" Name="filterByList" VerticalAlignment="Top" Width="303" >
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Height="23" HorizontalAlignment="Left" Margin="0,50,34,0" Name="filterName" Text="{Binding DisplayName}" VerticalAlignment="Top" />
<ComboBox Height="23" HorizontalAlignment="Right" Margin="0,50,34,0" Name="filterValues" VerticalAlignment="Top" Width="107" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=ListView}, Path=filterByValues}" IsEnabled="True" SelectedIndex="0" SelectedValuePath="filterByValues" DisplayMemberPath="filterByValues" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
List<Dimension> dimensionsData = new List<Dimension>();
List<filterByValues> filterByValuesData = new List<filterByValues>();
JArray filterByObject = JArray.Parse("[ { 'DisplayName': 'Fund', 'Values': [ 'FundA', 'FundB', 'FundC' ] }, { 'DisplayName': 'Sector', 'Values': [ 'SectorA', 'SectorB', 'SectorC' ] }, { 'DisplayName': 'Country', 'Values': [ 'CountryA', 'CountryB', 'CountryC' ] } ]");
foreach (JObject value in filterByObject)
{
filterByValuesData = new List<filterByValues>();
String JsonName = (String)value.GetValue("JsonName");
String DisplayName = (String)value.GetValue("DisplayName");
JArray Values = (JArray)value.GetValue("Values");
foreach (var item in Values)
{
filterByValuesData.Add(new filterByValues((string)item));
}
dimensionsData.Add(new Dimension { DisplayName = DisplayName, filterByValues = filterByValuesData });
}
filterByList.ItemsSource = dimensionsData;
public class Dimension
{
public string DisplayName { get; set; }
public List<filterByValues> filterByValues { get; set; }
}
public class filterByValues{
public string filter{ get; set; }
public filterByValues(String val) {
filter = val;
}
}
生成的組合框為空。 我是C#和WPF的新手。
看起來問題出在您的ComboBox綁定表達式中
<ComboBox Height="23" HorizontalAlignment="Right" Margin="0,50,34,0" Name="filterValues" VerticalAlignment="Top" Width="107" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=ListView}, Path=filterByValues}" IsEnabled="True" SelectedIndex="0" SelectedValuePath="filterByValues" DisplayMemberPath="filterByValues" />
您不需要項目源中的相對源綁定,DataTemplate將應用於所有呈現的項目。 你可以試試
<ComboBox Height="23" HorizontalAlignment="Right" Margin="0,50,34,0" Name="filterValues" VerticalAlignment="Top" Width="107" ItemsSource="{Binding filterByValues}" IsEnabled="True" SelectedIndex="0" SelectedValuePath="filter" DisplayMemberPath="filter" />
如果仍然無法使用,請在Visual Studio輸出窗口中查看,它會詳細輸出綁定錯誤。 如果是這種情況,您可以在這里分享。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.