我有一些嵌套控件似乎不能正確地繼承綁定......或者它可能完全是其他的東西。我對WPF有點新鮮。ListBox中的DataGrid ItemTemplate不繼承綁定?
我已經有一個綁定到ListBox的對象的ObservableCollection,並且在頂層,這似乎正在工作,因爲按預期爲集合中的每個項目添加了一行。問題是,我需要把列表框的ItemTemplate內的DataGrid和...
我得到的都是頭部,這是我手工指定。沒有來自綁定對象的數據。
我可能只是做了一些愚蠢的事情。下面的代碼,稍作簡化:
XAML:
<ListBox x:Name="ReportListBox" Margin="10,10,10,10" Grid.Row="1" ItemsSource="{Binding Path=SummaryTotals, Mode=OneWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Date, StringFormat=\{0:MM/dd/yyyy\}}" Header="Date"/>
<DataGridTextColumn Binding="{Binding GrossRevenue}" Header="Gross Revenue" />
<DataGridTextColumn Binding="{Binding OurRevenue}" Header="Our Revenue" />
<DataGridTextColumn Binding="{Binding Cost}" Header="Cost" />
<DataGridTextColumn Binding="{Binding Profit}" Header="Profit" />
<DataGridTextColumn Binding="{Binding Roi}" Header="ROI" />
<DataGridTextColumn Binding="{Binding Rpc}" Header="RPC" />
<DataGridTextColumn Binding="{Binding Clicks}" Header="Clicks" />
<DataGridTextColumn Binding="{Binding Conversions}" Header="Conversions" />
<DataGridTextColumn Binding="{Binding ConversionRate}" Header="Conversion Rate" />
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
C#:
public class SummaryTotalRecord
{
public DateTime Date { get; set; }
public decimal Cost { get { return Google.Cost + Ypa.PureLocal.Cost + Ypa.BuyerPricer.Cost; } }
public decimal GrossRevenue { get { return Google.GrossRevenue + Ypa.PureLocal.GrossRevenue + Ypa.BuyerPricer.GrossRevenue; } }
public decimal OurRevenue { get { return Google.OurRevenue + Ypa.PureLocal.OurRevenue + Ypa.BuyerPricer.OurRevenue; } }
public decimal Roi { get { return (Google.Roi + Ypa.PureLocal.Roi + Ypa.BuyerPricer.Roi)/3; } }
public decimal ConversionRate { get { return (Google.ConversionRate + Ypa.PureLocal.ConversionRate + Ypa.BuyerPricer.ConversionRate)/3; } }
public decimal Profit { get { return Google.Profit + Ypa.PureLocal.Profit + Ypa.BuyerPricer.Profit; } }
public decimal Rpc { get { return (Google.Rpc + Ypa.PureLocal.Rpc + Ypa.BuyerPricer.Rpc)/3; } }
public long Clicks { get { return Google.Clicks + Ypa.PureLocal.Clicks + Ypa.BuyerPricer.Clicks; } }
public long Conversions { get { return Google.Conversions + Ypa.PureLocal.Conversions + Ypa.BuyerPricer.Conversions; } }
// ... plus a bunch of other properties I haven't touched yet
}
public ObservableCollection<SummaryTotalRecord> SummaryTotals = new ObservableCollection<SummaryTotalRecord>();
我發現和你有類似的問題,接受修復似乎像
RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}
但都沒有,也沒有x:Type ListItem
似乎產生任何結果的差異。
更新:嘗試一種結果類似的新方法。我已經改變了我的類返回一個名爲TableData
的DataTable和修改,像這樣的XAML:
<Expander IsExpanded="True" Header="{Binding Date, StringFormat=\{0:MM/dd/yyyy\}}">
<DataGrid DataContext="{Binding Path=TableData}" AutoGenerateColumns="True" />
</Expander>
類似的結果:
擴展器可以訪問Date
財產,但在DataGrid它包含無權訪問TableData
?
'x:Type ListBoxItem'如何? –
好的電話,但沒有骰子。我試圖將其添加到數據網格的綁定屬性中,並且當這不起作用時,單個列仍然只能看到標題。 –
您可以粘貼您在輸出窗口中獲得的每個綁定錯誤之一嗎? –