在我的应用程序中,我有一个Server
类,其中包含公共属性Name
和Connected
。
Connected
是一个bool,由Server
类的每个实例更新。
现在我有DataGrid
,它从名为服务器的服务器列表中自动生成列。
有没有办法更改dataGrid,以便显示"已连接"当Connected
为真且"断开连接时#34;当Connected
为假时?
答案 0 :(得分:0)
如果使用AutoGenerateColumns
,则可以在后面的代码中处理AutoGeneratingColumn
事件并修改新创建的Connected
DataGridCheckBoxColumn。我要做的是创建一个触发器,它将根据ChechBox检查状态更改状态文本:
private void DataGridAutoGeneratingColumnHandler(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "Connected")
{
var c = e.Column as DataGridCheckBoxColumn;
if (c == null)
return;
c.IsReadOnly = true;
c.ElementStyle =
new Style
{
TargetType = typeof (CheckBox),
Setters =
{
new Setter { Property = ContentProperty, Value = "Disconnected" },
// prevent checking CheckBoxes
new Setter { Property = IsHitTestVisibleProperty, Value = false },
},
Triggers =
{
new Trigger
{
Property = CheckBox.IsCheckedProperty,
Value = true,
Setters =
{
new Setter { Property = ContentProperty, Value = "Connected" }
}
}
}
};
}
}
<小时/> 另一个想法:在viewModel中创建一个特殊属性,用于连接状态描述。
public class Server
{
public string Name { get; set; }
public bool Connected { get; set; }
public string ConnectionStatus
{
get { return Connected ? "Connected" : "Disconnected"; }
}
}
然后禁用Connected
属性
private void DataGrid_AutoGeneratingColumnHandler(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "Connected")
e.Cancel = true;
}