CellData라는 매우 간단한 개체가 있습니다. 다음과 같이 정의됩니다 :itemsource에서 개체의 속성을 기반으로 WPF DataGrid에서 Cell의 색을 변경하는 방법은 무엇입니까?
public sealed class CellData
{
internal string DisplayText
{
get;
set;
}
public string Color
{
get;
set;
}
public override string ToString()
{
return this.DisplayText;
}
}
저는 WPF 툴킷 DataGrid를 사용하여 표시 할 수 있습니다. 그러나 셀에있는 데이터를 기반으로 각 셀의 배경색을 변경할 수 있어야합니다. DataTrigger의 CellData 객체를 볼 수 없기 때문에 어떤 유형의 바인딩이 필요한지 이해하는 데 어려움을 겪고 있습니다. 나는 다음과 같은, 그리고 여러 가지 다른 변화를 시도했지만 난 일하러 수 없습니다
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=(CellData).Color, Mode=OneWay}" Value="1">
<Setter Property="Background" Value="Red" />
<Setter Property="Foreground" Value="White" />
</DataTrigger>
내가 XAML 그래서 어떤 제안을 크게 감상 할 수 databidinding에 아주 새로운 오전. 고맙습니다.
마우리 Reginelli - 따라갈 지 모르겠습니다. Quartermeister, 내가하는 일은 DataTable을 만든 다음 DataTree의 DataContext를 DataTable에 설정하고 AutoGenerate를 true로 설정하는 것입니다. 문제는 열과 행이 모두 런타임에 생성된다는 것입니다. 그 중에서도 열에있는 모든 셀의 색을 변경하고 싶지 않기 때문에 열에 스타일을 적용하고 싶지는 않습니다. 여기서 문제는 바인딩과 XAML이 어떻게 작동하는지 완전히 이해하지 못한다는 것입니다. 나는 연구를 계속할 것이지만 만약 당신이 위대한 것이라고 다른 제안이 있다면. – Nick
@Nick : 열에 CellStyle을 적용하면 각 셀에 개별적으로 트리거가 적용되므로 사용자가 원하는 것일 수 있습니다. 셀의 DataContext가 개별 셀의 값이 아닌 DataRow가되기 때문에 AutoGenerated 열을 사용하면 어려울 것입니다. TextBlock 또는 TextBox의 Text 속성 만 특정 열에 바인딩됩니다. AutoGeneratingColumn 이벤트를 처리하고 현재 열을 기반으로하는 스타일을 적용하여 수행 할 수 있지만 코드에서 많은 프리젠 테이션 계층 논리를 수행 할 수 있습니다. – Quartermeister
Quartermeister - 나는 다시 돌아가 수동으로 열을 정의한 다음 위의 팁을 사용했습니다. 모든 것이 잘되었습니다. 고마워요! 그것은 기괴하며 WPF에 익숙하지 않기 때문에 아마도 WPF DataGrid가 뒤로 물러나는 것처럼 느껴집니다. – Nick