WPF DataContext从另一堂课

问题描述

具有从类 SearchByID 获取的常规DataContext,因此有必要从另一个类(例如 testClass )中获取单独的DataContext。

XAML示例:

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

<Grid>

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


</Grid>

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

任何想法。

解决方法

一个主意,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>

结果: the word test on a white background highlighted yellow