저는 Mappers.XY 클래스를 double 형에 기반한 수직 계열을 사용하여 이해하려고합니다. 그것을 테스트하기 위해 Y 축의 모든 짝수 인덱스를 빨간색으로 채우고 싶지만 .Fill은 X 값만 사용하는 것 같습니다. Red X-values 나는 심지어 .Fill 변경 값에 있지만 변화를 기반으로하는 : X 값이 여기에 표시도 같은 경우에만수직 계열의 Mappers.Xy <double>을 사용할 때 색인에 액세스하는 방법?
var RedBrush = new SolidColorBrush(Color.FromRgb(238, 83, 80));
Mapper = Mappers.Xy<double>()
.X((value, index) => value)
.Y((value, index) => index)
.Fill(index => index % 2 == 0 ? RedBrush : null)
.Stroke(index => index % 2 == 0 ? RedBrush : null);
내가 빨간색 막대와 끝까지 : 여기 내가 가지고있는 코드와 결과입니다 .
편집 : 나는이 .Fill의 기본 방법을 사용하여 문제를 좁혀 것 같아요 :
public CartesianMapper<T> Fill(Func<T, object> predicate);
내가이 채우기위한 기초로서 이중 사용 생각을 내 경우에는 어떤 , X 값이됩니다.
public CartesianMapper<T> Fill(Func<T, int, object> predicate);
문제는 내가 이것을 사용하는 방법을 잘 모르겠어요 것입니다 대신, 내가 원하는 무엇인가를 int ...로 인덱스를 고려하는 것 .Fill에 대한 과부하를 사용해야합니다. 가지고있는 대신 :
.Fill(index => index % 2 == 0 ? RedBrush : null)
어떻게해야합니까? 내 lamda 기술은 초보자 수준에 있습니다. 내가 여기에 도움을 유형 및 구성을 검토 한
*** 무시 될 수 PREVIOUS 텍스트를 ... : https://lvcharts.net/App/examples/v1/wpf/Types%20and%20Configuration보다 구체적으로는 내 자신이 두 개념을 적용하는 것을 시도하고있다 :
당신이 시리즈 모음 인스턴스를 정의 할 때 당신은 또한 기본 구성을 전달할 수 있습니다시리즈 컬렉션 수준에서
는,이 구성은 세계를 오버라이드 (override) 구성 및 시리즈 구성이 null 인 경우에만 설정됩니다 :
마지막으로 당신은 또한 매퍼 만 정의 할 수 있습니다 특정 시리즈에서
을
var mapper = Mappers.Xy<MyClass>().X(v => v.XProp).Y(v => v.YProp);
var seriesCollection = new SeriesCollection(mapper);
myChart.SeriesCollection = seriesCollection;
var mapper = Mappers.Xy<MyClass>().X(v => v.XProp).Y(v => v.YProp);
var pieSeries = new PieSeries(mapper);
: 일련이는> 세계와 SeriesCollection 구성을 무시합니다
문제는 방금 복식을 사용하기 때문에 예제에서 ObservablePoints 속성을 사용하지 않는다는 것입니다.
두배 만 사용하면 누구나 알 수 있습니까? 어떤 대안? 표현식에서 어떤 이유
var Mapper = Mappers.Xy<double>()
.X((value, index) => value)
.Y((value, index) => index)
.Fill((value, index) => index % 2 == 0 ? RedBrush : null);
는 람다 식 인덱스 % 2 대신 값 % 2을 평가 한 것 같다 다음과 같이
은 당신이 .X ((값, 인덱스) => 값) 대신에 .X (값 => 값)을 해봤 당신의 첫 번째 예에서 매퍼? – AlBal
예, 변경되지 않았습니다. 하지만 문제는 내가 올바른 과부하를 사용하지 않는다고 생각합니다. 기본 메서드는 다음과 같습니다. public CartesianMapper 채우기 (Func 조건 자); 을 사용하여 평가하고 채 웁니다. 사용하려는 오버로드는 다음과 같습니다. public CartesianMapper Fill (Func predicate); 어느 int로 인덱스에 대한 액세스를 허용하는 것 같습니다. 문제는 그것을 사용하는 방법을 모른다는 것입니다. 대신 : .Fill (index => index % 2 == 0? RedBrush : null), 무엇을 사용해야합니까? 감사! –
hillborne
해결 됨 - 아래 답변을 참조하십시오. – AlBal