在我的申請中,我有一個Server
類,它具有公共屬性Name
和Connected
。如何編輯DataGrid控件wpf中的單元格類型?
Connected
是一個bool,它由Server
類的每個實例更新。
現在我有DataGrid
這是自動生成服務器列表的服務器列中的列。
有沒有辦法改變dataGrid,以便當Connected
爲真時顯示「已連接」,當Connected
爲假時顯示「已斷開連接」?
在我的申請中,我有一個Server
類,它具有公共屬性Name
和Connected
。如何編輯DataGrid控件wpf中的單元格類型?
Connected
是一個bool,它由Server
類的每個實例更新。
現在我有DataGrid
這是自動生成服務器列表的服務器列中的列。
有沒有辦法改變dataGrid,以便當Connected
爲真時顯示「已連接」,當Connected
爲假時顯示「已斷開連接」?
如果使用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" }
}
}
}
};
}
}
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;
}
謝謝您的詳細回覆! –
數據網格控制,編輯我的職務,以反映這一點。對混淆抱歉。 –
絕對需要'自動生成列嗎?在xaml中定義2列可能更簡單 – ASh