【问题标题】:how to get the children of an element WPF如何获取元素 WPF 的子元素
【发布时间】:2012-06-19 06:57:40
【问题描述】:

我有一个包含图像和文本块的堆栈面板。一旦用户执行双击,我就会引发一个事件。(P.S - 我正在添加 StackPanel 及其子项(如果重要,则以编程方式添加 Image 和 TextBlock)。

现在,我需要从堆栈面板中获取 TextBlock 元素,我知道我应该使用 DataBinding 来完成,但我是 WPF 的初学者,并且真的没有在网络上找到任何关于它的示例。很高兴得到解释,非常感谢!

(我前段时间了解了 DataBinding)。

【问题讨论】:

  • 为什么要以编程方式添加 StackPanel 及其子项?很有可能您可以纯粹在 Xaml 中获得所需的内容,并将点击绑定到命令,或者简单地按名称引用 TextBlock。
  • @MichaelGraczyk 我正在从数据库中获取我显示的数据(例如 - stackpanel)。
  • 您几乎不需要从代码中添加 UI 元素。如果 UI 在运行时未发生变化,则不应从代码中添加任何 UI 元素。您可以使用 x:Name 指令为元素命名,然后从代码隐藏中通过该名称访问。
  • @MichaelGraczyk 我正在开发的程序是一个聊天程序,问题是我从数据库中获取了他的联系人,我怎么知道我应该在 xaml 中添加多少元素?
  • 如果您对数据绑定感到满意,那么您应该阅读有关绑定到集合的 msdn 部分:msdn.microsoft.com/en-us/library/…。以编程方式添加元素将程序逻辑与表示紧密耦合。它使代码更难阅读,更难修改,更难在视觉上改变。如果您将 UI 和代码分开,您可以使应用程序看起来很漂亮,并且也可以工作,而不必同时担心两者。此外,在 Xaml(或 CSS 或其他)中布置视图比在代码中更容易。

标签: c# wpf


【解决方案1】:

获取特定类型(例如 TextBlock)的第一个子元素的简单方法是:

var textBlock = panel.Children.OfType<TextBlock>().FirstOrDefault();

如果没有,您可以获取第一个 TextBlock 或 null

【讨论】:

    【解决方案2】:

    您需要将 TextBlock Text (?) 元素 DataBind 到您的班级 - 像这样:

    在 XAML 中

    <TextBlock x:Name="MyTextBlock"
       Text={Binding ShowThis, Mode=OneWay} />
    

    在课堂上:

     public class MyDataContextClass
     {
         private string showThis = string.Enpty;
         public string ShowThis
         {
             get {return showThis;}
             set
             {
                  showThis = value;
                  if (PropertyChanged != null)
                      PropertyChanged(....);
             }
          }
      }
    

    并且您必须使用 DataBing Xaml 才能上课。 (可能在构造函数中?)

      public class MyXamlWindow
      {
           public MyXamlWindow()
           {
                 this.DataContext = new MyDataContextClass();
           }
       }
    

    上面有很多的方法

    【讨论】:

    • 当然如果他只想访问TextBlock,他可以简单地使用x:Name => MyTextBlock。
    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 2020-10-30
    • 1970-01-01
    • 2019-02-19
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多