0

小さな問題があります。

コードビハインド:

...
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>

グリッド内の通常のコード:

<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}" />

C# コードで設定されている ListView ソースに問題はなく、テンプレートも読み込まれています。しかし、これはアプリケーションを実行しているときに起こります:

プロジェクト名が表示されない

ご覧のとおり、プロジェクト名(Project.Name) は表示されていませんが、私の ListView テンプレートではデータ バインディングが行われているため、機能するはずです。テキストのデータバインディングが機能しない理由を誰かが知っていますか? 助けてください。

4

2 に答える 2

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;
    }
}
于 2012-10-27T15:32:25.097 に答える
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;
    }
}
于 2012-10-27T15:33:43.663 に答える