c# - WPF MVVM 바인드 사전<문자열, List<String>>을 DataGrid에 연결



xaml (1)

개인적으로 나는 당신의 데이터를 표현하기위한 객체 모델을 만들고 그 객체들의 집합에 바인딩 할 것이다.

public class MyObject
{
    public string Company { get; set; }
    public string Operator { get; set; }
    public string Interest { get; set; }
    public string Type { get; set; }
}

public MainViewModel()
{   
    var partners = new ObservableCollection<MyObject>()
    {
        new MyObject("company1", "false", "40%", "type1"),
        new MyObject("company2", "true", "60%", "type2")
    };
    ...
}

나는 "컬렉션의 각 행에 대해 DataRow를 만들고 그 행에 DataContext를 할당"하는 것으로 읽으므로 일반적으로 DataGrid에서 요구하는 것은 불가능하다고 생각합니다. 귀하의 경우, 각 행은 전체 데이터 그리드를 나타내므로 이는 귀하에게 적합하지 않습니다.

Dictionary<string, List<string>> 을 올바른 레이아웃으로 내 WPF DataGrid에 바인딩하는 데 문제가 있습니다.

이것은 내 데이터 객체입니다.

public class Result
{
    public Result(string type, string name, Dictionary<string, List<string>> partners)
    {
        Type = type;
        Name = name;
        Partners = partners;
    }

    public string Type { get; set; }
    public string Name { get; set; }
    public Dictionary<string, List<string>> Partners { get; set; }
}

어떤 데이터를 더미 데이터로 채우고 내 viewmodel의 public 속성으로 노출 시켰습니다.

public class MainViewModel
{
    public MainViewModel()
    {   
        var partners = new Dictionary<string, List<string>>
        {
            {"Company", new List<string> {"company1", "company2"}},
            {"Operator", new List<string> {"false", "true"}},
            {"Interest", new List<string> {"40%", "60%"}},
            {"Type", new List<string> {"type1", "type2"}}
        };
        Asset = new Result("TestType", "TestName", partners);
    }

    public Result Asset { get; set; }
}

Partners 사전을 내 DataGrid에 바인딩하려고합니다. 각 사전 항목의 Key (예 : 회사 / 운영자 / 관심 분야 / 유형)는 데이터 그리드의 헤더를 구성해야하며 각 값은 해당 열을 채 웁니다. 이렇게 :

Company | Operator | Interest | Type
company1   false       40%      type1
company2   true        60%      type2

이것을 어떻게 할 수 있습니까? 나는 이 질문을 보고 있었지만 데이터는 내가 원하는 방식에서 다른 방향으로 나아 갔다. 내 키를 DataGrid 열 헤더로 사용하고 싶습니다. 헤더 속성에서 데이터 바인딩을 사용할 수 없다고 생각할 때 헤더를 하드 코딩해도 상관 없습니다. 이것은 지금까지 XAML로, itemsource가 올바르게 바인딩되어 있지만 필요한 형식으로 데이터를 가져 오는 방법을 알지 못합니다.

<DataGrid x:Name="dg" ItemsSource="{Binding Asset.Partners}" AutoGenerateColumns="false">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Company" Binding="{Binding ?}"/>
        <DataGridTextColumn Header="Operator" Binding="{Binding ?}"/>
        <DataGridTextColumn Header="Interest" Binding="{Binding ?}"/>
        <DataGridTextColumn Header="Type" Binding="{Binding ?}"/>
    </DataGrid.Columns>
</DataGrid>

첫 번째 열에 Binding="{Binding Value[0]} 을 사용하면 내 열의 값"행 "을 얻지 만 다른 방법으로 원합니다. 또한 Binding="{Binding Asset.Partners[Company]}" 하지만 그게 효과가 없습니다.

어떤 도움을 주셔서 감사합니다.





datagrid