WPF에서 GridViewColumn
에 대해 DisplayMemberBinding
을 설정했습니다.WPF : GridViewColumn의 DisplayMemberBinding에 PriorityBinding 사용
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderErrorType}" DisplayMemberBinding="{Binding Exception, Mode=OneWay, Converter={StaticResource typeConverter}, FallbackValue='---'}"/>
typeConverter
는이 GUI에 문자열 예외의 종류를 표시하도록 Exception.GetType()
확장자 '모방'이. 예외가없고이 값이 null 인 경우이 열에 다른 속성을 출력하고 싶습니다. 이제 DisplayMemberBinding
에 대해서는 PriorityBinding
을 사용하고 싶지만 GridViewColumn
은 '하위 요소'로 PriorityBinding
을 제외하고 '하위 요소'로는 DisplayMemberBinding
속성을 사용할 수 없습니다. 이 같은 GridViewColumn
에 대한 PriorityBinding
를 사용하는 방법이있다 :
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderErrorType}">
<PriorityBinding>
<Binding Path="Exception" Mode="OneWay" Converter="{StaticResource typeConverter}" IsAsync="True" />
<Binding Path="AnotherProperty" IsAsync="True" />
</PriorityBinding>
</GridViewColumn>
편집
나는 아래의 "재"의 제안에 내 코드를 변경,하지만 그것은 작동하지 않습니다
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderErrorType}">
<GridViewColumn.DisplayMemberBinding>
<PriorityBinding FallbackValue="-*-">
<Binding Path="Exception" Converter="{StaticResource typeConverter}" Mode="OneWay" IsAsync="True"/>
<Binding Path="Comment" FallbackValue="---"/>
</PriorityBinding>
</GridViewColumn.DisplayMemberBinding>
</GridViewColumn>
Exception
속성이 null 인 경우 표시 값이 비어 있습니다. 두 번째 바인딩 속성 인 "comment"가 설정되어 있는지 확인했습니다.
이 두 바인딩이 제대로 작동 : 당신이 <GridViewColumn.DisplayMemberBinding>
태그 누락
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderComment}" DisplayMemberBinding="{Binding Comment, FallbackValue='---'}"/>
<GridViewColumn Header="test2" DisplayMemberBinding="{Binding Exception, Mode=OneWay, Converter={StaticResource typeConverter}, FallbackValue='---'}"/>
답변 해 주셔서 감사합니다! 나는 당신이 가정 한대로 그것을 구현했지만 제대로 작동하지 않습니다. "Exception-Binding"이 null 인 경우 두 번째 바인딩 및 우선 순위 바인딩에 대해 fallbackValues를 정의했지만 아무 값도 표시하지 않습니다. 나는 위의 내 게시물을 편집했습니다. – rbr94
@RobinBreusch, Exception이 null이고 변환기가 null 또는 빈 문자열을 반환하면 PriorityBinding이이를 올바른 값으로 받아들이고 Anotherproperty 바인딩을 사용하지 않습니다 (정보 : https://msdn.microsoft.com/en-us) /library/system.windows.data.prioritybinding(v=vs.110).aspx#Anchor_6). 예외가 null 인 경우 컨버터에서'DependencyProperty.UnsetValue'를 반환하십시오. – ASh
그게 문제를 해결했습니다. 고마워요! – rbr94