WPF에서 또 다른 바인딩 기이 한 현상이 발생했습니다. 다음 클래스를 고려하고 IStupid
입력 속성은 MyStupid
전화 : 형식화 된 인터페이스의 바인딩에 대한 바인딩
public struct DumbClass
{
public IStupid MyStupid { get { return new IsStupid(); } }
}
public interface IStupid{}
public class IsStupid : IStupid{}
지금에 다음과 같은 바인딩을 고려
을ListBox
:
<ListBox Name="OptOccurances" Height="238" HorizontalAlignment="Left" Margin="130,34,0,0" VerticalAlignment="Top" Width="229" >
</ListBox>
다음 XAML에 대한 특별한 것은 없다
var items = new List<DumbClass>(new []{new DumbClass(), new DumbClass(), new DumbClass()});
OptListBox.ItemsSource = items;
예상대로 목록 상자의 출력은 "MyProject.DumbClass"의 3 행입니다.
DisplayMemberPath="MyStupid"
(또는 템플릿의 TextBlock에 직접 'MyStupid'를 바인딩하는 ItemTemplate을 만들면), 나는 MyProject.IsStupid
이라고 말했을 때 3 개의 빈 행을 얻습니다. 데이터 바인딩 엔진이 기본 ToString()
구현을 호출하고 클래스 이름을 표시 할 수없는 이유는 무엇입니까? 인터페이스 유형 지정 등록 정보에 대한 일시적인 해결책이 있습니까? 적어도 바인딩 오류가 발생하지 않는 이유는 무엇입니까?
+1의 값을 얻기 위해 다르게 작동합니다. –
'DumbClass'라는 구조체는 클래스가 아니라는 것을 알지 못하기 때문에 진정으로 바보입니다. – Dan
바인딩 오류가 "throw되지 않습니다." Visual Studio의 출력 창에 바인딩 오류가 있는지 확인할 수 있습니까? –