【问题标题】:WPF DataContext. Taking from another classWPF 数据上下文。从另一个班级取
【发布时间】:2021-01-09 20:12:46
【问题描述】:

SearchByID 类中获取通用 DataContext,因此需要从另一个类中获取单独的 DataContext,例如 testClass

XAML 示例:

<Window.DataContext>
        <model:SearchById />
 </Window.DataContext>

<Grid>

<TextBlock Text="{Binding Description}">
<Texblock.DataContext>
<model: testClass/>
</TextBlock.DataContext>
</TextBlock>


</Grid>

没有失败,IntelliSens 可以看到所有属性。 但是 TextBlock 是空白的。

请有任何想法。

【问题讨论】:

  • 将 testClass 实例分配给 TextBlock 的 DataContext 似乎没有意义,只是为了显示其 Description 属性,该属性只能在 testClass 实例中初始化一次。您可能会更好地直接绑定到静态属性。目前尚不清楚您实际想要达到的目标。

标签: wpf datacontext


【解决方案1】:

一个想法,Description 是属性还是字段?

Property 可以工作:

public class TestClass
{
    public string Description { get; set; }
    public TestClass()
    {
        Description = "Test";
    }
}

field 不会:

public class TestClass
{
    public string Description;
    public TestClass()
    {
        Description = "Test";
    }
}

MainWindow.xaml

<TextBlock Text="{Binding Description}"
           Background="Yellow" 
           HorizontalAlignment="Center"
           VerticalAlignment="Center">
    <TextBlock.DataContext>
        <local:TestClass />
    </TextBlock.DataContext>
</TextBlock>

结果:

【讨论】:

  • “描述”是类 testClass 的属性。
  • 您在上面提到了“字段”。如果“描述”是一个字段。行不通吧。还是?
  • 对不起,应该更清楚。字段(第二个示例)不起作用。
  • 我明白你的意思了。一个问题:为什么会这样?什么原因?
  • @Bolt 数据绑定仅适用于公共属性。如果 Description 为 1,并且已正确初始化,则您的代码应该可以工作。您必须在问题中提供更多详细信息,即显示属性的声明和初始化。
猜你喜欢
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多