【问题标题】:WPF - Binding to Public FieldsWPF - 绑定到公共字段
【发布时间】:2014-11-25 08:06:33
【问题描述】:

我看了video-example

它工作正常。但我想让它复杂一些。

再创建一个类。这将是上面视频示例中Person 类的简单包装

public class MetaPerson
{
    public Person Person;
    public String SomeMeta;
}

在构造函数窗口中编写代码

 public MainWindow()
 {
     InitializeComponent();

     var metaPerson = new MetaPerson
                          {
                              Person = new Person("Lola", "Azazaeva", 25, Gender.Female),
                              SomeMeta = "Eto some meta!"
                          };

       //Setas datacontext
       DataContext = metaPerson;
    }

在 XAML 中我像在视频示例中一样写:

    <StackPanel>
        <ContentControl Content="{Binding}">
            <ContentControl.ContentTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Person.Name}" FontSize="12" Foreground="Red"/>
                    </StackPanel>
                </DataTemplate>
            </ContentControl.ContentTemplate>
        </ContentControl>
    </StackPanel>

这行不通。

        <StackPanel>
            <ContentControl Content="{Binding Person}">
                <ContentControl.ContentTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding Name}" FontSize="12" Foreground="Red"/>
                        </StackPanel>
                    </DataTemplate>
                </ContentControl.ContentTemplate>
            </ContentControl>
        </StackPanel>

那也行不通:(

我做错了什么?

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    唯一的问题是您将变量设置为成员——它们必须是属性才能使绑定起作用。

    public class MetaPerson
    {
        public Person Person { get; set; }
        public String SomeMeta { get; set; }
    }
    

    【讨论】:

    • 确实有效,谢谢。还是不习惯WPF的功能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    相关资源
    最近更新 更多