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]}"
하지만 그게 효과가 없습니다.
어떤 도움을 주셔서 감사합니다.