我在這裏跟着教程:http://www.wpf-tutorial.com/datagrid-control/introduction/爲什麼不填充我的WPF數據網格?
我設置了DataGrid,創建了一個包含數據源的集合,並將DataGrid的ItemsSource設置爲該集合。在運行該程序時,似乎行數是正確的,但所有行都是空白的。我需要更改哪些數據才能正確顯示數據?
XAML:
<Window x:Class="Task_Timer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Task Timer" Height="284" Width="598" MinWidth="500" MinHeight="400">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<DataGrid x:Name="ProcessBox" Margin="0" SelectionMode="Extended" ScrollViewer.HorizontalScrollBarVisibility="Hidden" GridLinesVisibility="None" AutoGenerateColumns="False" IsManipulationEnabled="True" IsReadOnly="True" HorizontalAlignment="Left" Width="285">
<DataGrid.Columns>
<DataGridTextColumn Header="Process" Binding="{Binding ProcessName}" />
<DataGridTextColumn Header="Memory" Binding="{Binding Memory}" />
</DataGrid.Columns>
</DataGrid>
<Button Content="Button" Grid.Column="1" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" Width="75"/>
</Grid>
</Window>
C#:
namespace Task_Timer
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<ProcessContainer> items = new List<ProcessContainer>();
foreach (Process process in Process.GetProcesses())
{
items.Add(new ProcessContainer(process.ProcessName, 10));
}
ProcessBox.ItemsSource = items;
}
}
public class ProcessContainer
{
public string ProcessName;
public int Memory;
public ProcessContainer(string name, int memory)
{
ProcessName = name;
Memory = memory;
}
}
}
有趣。我總是認爲得到和設置是隱含在那裏。無論如何工作,謝謝! – ssb
這個答案可能會誤導別人從實際的原因。事實上,只有***屬性***可以用於綁定,***域***不能(在用戶代碼中不提及其他不好的東西)。 –
@KingKing是對我的代碼或此答案中的代碼的引用「壞事」? – ssb