[英]WPF Datagrid, display an X in a column based on value
我有一個數據網格,其中包含簡單描述/值對的行
我想要的不是簡單的“描述”和“值”列,而是1到4列(可能值的范圍),並在對應於該值的列中顯示X
換句話說,而不是
Description | Value
--------------------
Desc1 | 2
Desc2 | 4
就像是
Description | 1 | 2 | 3 | 4
----------------------------
Desc 1 | | X | |
Desc 2 | | | | X
我正在考慮通過在對象中執行此操作,但這非常難看,我想在WPF中可能
編輯:
添加到已經想到的答案是在所有列中添加“X”並使用4個可以切換可見性的轉換器,但我認為這可能僅使用1個轉換器或者可能是另一種方式
你可以通過自定義網格模板做到這一點,但我認為使用像這樣的viewmodel的簡單和最好的方式:
public class MyViewModel
{
public MyViewModel(MyModel model)
{
Model = model;
}
public MyModel Model { get; set; }
public string Description
{
get
{
return Model.Description;
}
}
public string One
{
get
{
if (Model.Value == 1)
return "X";
else
return string.Empty;
}
}
public string Two
{
get
{
if (Model.Value == 2)
return "X";
else
return string.Empty;
}
}
public string Three
{
get
{
if (Model.Value == 3)
return "X";
else
return string.Empty;
}
}
public string Four
{
get
{
if (Model.Value == 4)
return "X";
else
return string.Empty;
}
}
}
所以你可以傳遞你的模型並綁定這個ViewModel的列表。
如果你真的使用整數,你可以放一個Canvas
,里面放一個X. 然后將Value
綁定到X的Left
,並使用轉換器轉換值,使得1變為0,2變為20等等(我可以建議(v - 1) * 20
)
關於你在問題中寫的第二個想法,如果這些是在某個模板中,你不會被迫使用轉換器。 使用模板的Triggers
。 例如,添加一些DataTrigger
,將其綁定到該值,並將DataTrigger
的Value
設置為1。 然后在DataTrigger
放置一個Setter
來設置相應X的Visibility
。(這個有一個回退,您應該在所有X上放置一個Name
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.