示例下载:
http://pan.baidu.com/share/link?shareid=160692&uk=3224032458
如XAML<Window x:Class="_2_2_1_获取进程信息.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="150"></RowDefinition>
</Grid.RowDefinitions>
<DataGrid Grid.Row="0" ItemsSource="{Binding ListProcess,Mode=OneWay}"
SelectionMode="Single"
RowBackground="LightBlue"
AlternatingRowBackground="Aqua"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="进程ID" Binding="{Binding Id}"></DataGridTextColumn>
<DataGridTextColumn Header="进程名称" Binding="{Binding ProcessName}"></DataGridTextColumn>
<DataGridTextColumn Header="物理内存" Binding="{Binding WorkingSet64}"></DataGridTextColumn>
<DataGridTextColumn Header="启动时间" Binding="{Binding StartTime}"></DataGridTextColumn>
<DataGridTextColumn Header="文件名" Binding="{Binding MainModule.FileName}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<DockPanel LastChildFill="True" Grid.Row="1">
<TextBlock DockPanel.Dock="Top">详细信息</TextBlock>
<StackPanel DockPanel.Dock="Bottom">
<Button Content="刷新" Width="100"></Button>
</StackPanel>
<TextBox></TextBox>
</DockPanel>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows;namespace _2_2_1_获取进程信息.ViewModel
{
public class MainWindowViewModel : Z.Core.WPF.NotificationObject
{
#region 默认构造函数
public Window WIN;
public MainWindowViewModel(Window win)
{
this.WIN = win;
Init();
} void Init()
{
this.ListProcess = Process.GetProcesses();
}
#endregion #region 界面属性
private Process[] m_ListProcess;
/// <summary>
/// 进程列表
/// </summary>
public Process[] ListProcess
{
get { return m_ListProcess; }
set
{
m_ListProcess = value;
this.RaisePropertyChanged("ListProcess");
}
} private Process m_ActiveProcess;
/// <summary>
/// 选中进程
/// </summary>
public Process ActiveProcess
{
get { return m_ActiveProcess; }
set
{
m_ActiveProcess = value;
this.RaisePropertyChanged("ActiveProcess");
}
}
#endregion
}
}出错:
无法对“System.Diagnostics.Process”类型的只读属性“StartTime”进行 TwoWay 或 OneWayToSource 绑定
但我已经是用Mode=OneWay了为什么还会出现TwoWay这种错误呢?
1:我想是不是因为Mode=OneWay只是针对ListProcess,但点击的列的对像为Process所以这里他默认是TwoWay?如果是要怎解决?
2:在DataGrid点中一个格的时候,格会有边框,但我现在想点的时候是选对一行,不要对某个单元格进行焦点谢谢
http://pan.baidu.com/share/link?shareid=160692&uk=3224032458
如XAML<Window x:Class="_2_2_1_获取进程信息.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="150"></RowDefinition>
</Grid.RowDefinitions>
<DataGrid Grid.Row="0" ItemsSource="{Binding ListProcess,Mode=OneWay}"
SelectionMode="Single"
RowBackground="LightBlue"
AlternatingRowBackground="Aqua"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="进程ID" Binding="{Binding Id}"></DataGridTextColumn>
<DataGridTextColumn Header="进程名称" Binding="{Binding ProcessName}"></DataGridTextColumn>
<DataGridTextColumn Header="物理内存" Binding="{Binding WorkingSet64}"></DataGridTextColumn>
<DataGridTextColumn Header="启动时间" Binding="{Binding StartTime}"></DataGridTextColumn>
<DataGridTextColumn Header="文件名" Binding="{Binding MainModule.FileName}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<DockPanel LastChildFill="True" Grid.Row="1">
<TextBlock DockPanel.Dock="Top">详细信息</TextBlock>
<StackPanel DockPanel.Dock="Bottom">
<Button Content="刷新" Width="100"></Button>
</StackPanel>
<TextBox></TextBox>
</DockPanel>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows;namespace _2_2_1_获取进程信息.ViewModel
{
public class MainWindowViewModel : Z.Core.WPF.NotificationObject
{
#region 默认构造函数
public Window WIN;
public MainWindowViewModel(Window win)
{
this.WIN = win;
Init();
} void Init()
{
this.ListProcess = Process.GetProcesses();
}
#endregion #region 界面属性
private Process[] m_ListProcess;
/// <summary>
/// 进程列表
/// </summary>
public Process[] ListProcess
{
get { return m_ListProcess; }
set
{
m_ListProcess = value;
this.RaisePropertyChanged("ListProcess");
}
} private Process m_ActiveProcess;
/// <summary>
/// 选中进程
/// </summary>
public Process ActiveProcess
{
get { return m_ActiveProcess; }
set
{
m_ActiveProcess = value;
this.RaisePropertyChanged("ActiveProcess");
}
}
#endregion
}
}出错:
无法对“System.Diagnostics.Process”类型的只读属性“StartTime”进行 TwoWay 或 OneWayToSource 绑定
但我已经是用Mode=OneWay了为什么还会出现TwoWay这种错误呢?
1:我想是不是因为Mode=OneWay只是针对ListProcess,但点击的列的对像为Process所以这里他默认是TwoWay?如果是要怎解决?
2:在DataGrid点中一个格的时候,格会有边框,但我现在想点的时候是选对一行,不要对某个单元格进行焦点谢谢
解决方案 »
- 怎样在C#代码中调用XAML中定义的触发器
- 如何将string格式clolor转换成ForeColor形式的color?
- XAttribute的问题
- 请教高手HTML页面怎么转换成横版的WORD?
- c# DataSet DataRow 状态问题
- 如C#可以写穿过防火墙与外界通信的网络程序???
- 帮忙解决 "未处理的“System.Data.OleDb.OleDbException”类型的异常出现在 system.data.dll 中。"
- 如何实现代码的调试
- 如何得到一个Sql server2000里面所有的数据库?
- 高分请兄弟们推荐一款显卡!(反正我分多:))
- 查询SQL特定数据库名
- WINCE移动设备路径问题
不是ItemsSource="{Binding ListProcess,Mode=OneWayToSource}"
谢谢
可以在 DataGrid 上加上 IsReadOnly="True" 2. 自定义style:
<DataGrid.Style>
<Style TargetType="DataGrid">
<Setter Property="CellStyle">
<Setter.Value>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0" />
</Style>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Style>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0"/>
</Style>
</DataGrid.CellStyle>
默认绑定确实是TwoWay,确实应该设成 readonly