[英]C# WPF Binding to DataBase
嘿所有。 如果有些事情不清楚,請告訴我
我有dataGrid和TreeView。 我已將數據庫加載為實體數據模型和一些表。 其中一個表“relation”應該顯示給datagrid。 但是它的(關系表)列依賴於其他表作為系統,模型,功能和設備。 在數據網格中應該有4列,其中包含這些系統,型號,功能和設備的名稱。 (圖片1應該是)
它們如何顯示出來的問題。 DataSource運行不正常......見圖2。
<Grid DataContext="{StaticResource relationsViewSource}">
<DataGrid AutoGenerateColumns="True" Name="gridInventory" HorizontalContentAlignment="Right" Margin="255,12,12,128" ItemsSource="{Binding}" />
<StackPanel Height="391" HorizontalAlignment="Left" Margin="10,10,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="239" DataContext="{StaticResource systemsViewSource}" >
<TreeView Height="391" Name="treeView1" Width="239" VerticalContentAlignment="Top" HorizontalAlignment="Left" VerticalAlignment="Top" ItemsSource="{Binding}" />
</StackPanel>
</Grid>
圖片1:
圖2:
您將TreeView
和一些DataGrid
列DataGrid
到對象,但不告訴WPF如何繪制對象。 當WPF不知道如何繪制object
,它默認使用TextBlock
繪制它, Text
綁定到對象的.ToString()
您需要設置ItemTemplate
以告訴WPF如何繪制單個對象,例如:
<TreeView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</TreeView.ItemTemplate>
您還可以使用隱式DataTemplate
告訴WPF如何繪制特定對象。 這只是一個DataTemplate,它指定沒有Key
的DataType
,WPF會在嘗試渲染指定類型的對象時使用它。
如果要避免刪除AutoGenerateColumns="True"
並手動指定DataGrid的列,這可能是要使用的方法。
<DataGrid.Resources>
<DataTemplate DataType="{x:Type local:Device}">
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</DataGrid.Resources>
TreeView需要將綁定上的路徑設置為要顯示的屬性,
Devices是一個集合,您需要在其中放置Listview或顯示集合的內容,然后在其上放置DataTemplate以顯示您需要的內容,或者綁定到轉換器以返回設備的靜態字符串表示形式名單
或者只是讓某人為你做這一切,就像在這里的情況似乎大聲笑
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.