簡體   English   中英

WPF Datagrid,根據值在列中顯示X.

[英]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 ,將其綁定到該值,並將DataTriggerValue設置為1。 然后在DataTrigger放置一個Setter來設置相應X的Visibility 。(這個有一個回退,您應該在所有X上放置一個Name 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM