2012-10-27 4 views
0

작은 문제가 있습니다. 뒤에XAML 바인딩 코드가 작동하지 않습니다.

코드 :

... 
public struct Project 
{ 
    string Name; 
    string Path; 
    public Project(string Name, string Path = "") 
    { 
     this.Name = Name; 
     this.Path = Path; 
    } 
} 
... 

자료 코드 : 그리드

<DataTemplate x:Key="ItemProjectTemplate"> 
     <StackPanel> 
      <Image Source="Assets/project.png" Width="50" Height="50" /> 
      <TextBlock FontSize="22" Text="{Binding Name}" /> 
     </StackPanel> 
</DataTemplate> 

표준 코드 : 나는 C#으로 설정되는 ListView를 소스에 아무런 문제가 없을

<ListView Grid.Column="1" HorizontalAlignment="Left" Height="511" 
    Margin="25,72,0,0" Grid.Row="1" VerticalAlignment="Top" Width="423" 
    x:Name="Projects" ItemTemplate="{StaticResource ItemProjectTemplate}" /> 

코드 및 또한 내 서식 파일을로드하는 중입니다. 이 표시되지 않는 프로젝트 이름 (Project.Name를) 볼 수 있듯이

Project name is not being displayed

,하지만 내 ListView에 템플릿에 데이터 바인딩, 그래서 그것은 작동해야하지만이 내 응용 프로그램을 실행하고있을 때 발생합니다. 아무도 왜 작동하지 않는 텍스트에 대한 내 데이터 바인딩인지 알 수 있습니까? 도와주세요.

+0

wpf와 metro 둘 다 사용할 수 없습니다. – mydogisbox

+0

내 마음에 오는 첫 번째 일 : ItemsSource를 적절하게 설정 했습니까? 데이터 인터페이스가 없다면 바인딩이 실패합니다. –

답변

1

DataBindingProperties 일 때는 Fields이 아니고 작동합니다. 구조체를 클래스로 바꾸고 필드를 속성으로 지정하십시오 .-

public class Project 
{ 
    public string Name {get; set;} 
    public string Path {get; set;} 
    public Project(string Name, string Path = "") 
    { 
     this.Name = Name; 
     this.Path = Path; 
    } 
} 
1

공개 속성에 바인딩해야합니다! 그리고 구조체 대신 클래스를 사용하십시오. 구조체는 값으로 GUI에 전달되므로 실제 소스 항목을 변경할 수 없습니다.

public class Project 
{ 
    public string Name{ get; set;} 
    public string Path{ get; set;} 
    public Project(string Name, string Path = "") 
    { 
     this.Name = Name; 
     this.Path = Path; 
    } 
} 
관련 문제