1

查看来自的继承层次结构TextBox,我发现它TextBox没有DisplayMemberPath属性。这是有道理的,因为它没有ItemsSource要绑定到的 Items,因此没有DisplayMemberPath. 但是,我需要 a DisplayMemberPathfor aTextBox或可编辑的东西,我正在根据下面的情况寻找选项。

我正在使用的类/视图/视图模型:

Test.cs- 代码优先实体

public class Test : BaseModel
{
    public int Id { get; set; }
    public int GasProfileId { get; set; }
}

GasProfile.cs- 代码优先实体

public class GasProfile : BaseModel
{

    public int Id { get; set; }
    public double H2O { get; set; }
    public double CO2 { get; set; }

    private ObservableCollection<Test> _tests;
    public virtual ObservableCollection<Test> Tests
    {
        get { return _tests; }
        set
        {

            if (_tests != value)
            {
                _tests = value;
                Notify("Tests");
            }
        }
    }
}

TestGasView.xaml- 查看(用户控制)

这就是 TestGasView.xaml现在的样子

<Grid>
    <ListBox ItemsSource="{Binding SelectedTechnician.Test}"
             DisplayMemberPath="TestName">
             selectedItem="SelectedTest"
    </ListBox>

    <Label Content="H20"/>
    <TextBox></TextBox>
    <Label Content="CO2"/>
    <TextBox></TextBox>
</Grid>

这就是我希望它看起来/表现的样子(警告:损坏的代码/伪代码):

<Grid>
    <ListBox ItemsSource="{Binding SelectedTechnician.Test}"
             DisplayMemberPath="TestName"
             SelectedItem="SelectedTest">
    </ListBox>

    <Label Content="H20"/>
    <TextBox Text="{Binding SelectedTest.GasProfile}"
             DiaplayMemberPath="H20"></TextBox>
    <Label Content="CO2"/>
    <TextBox Text="{Binding SelectedTest.GasProfile}"
             DiaplayMemberPath="CO2"></TextBox>
</Grid>

TestGasViewModel.cs- 视图模型

具有获取/设置 SelectedTest 的属性。

如您所见,我想要在TextBoxes 上的数据绑定是错误的,就像 的位置一样DisplayMemberPath,但这表明我非常希望显示的值是 1) 可编辑 2) 通过单击测试和绑定到 SelectedTest 具有键的 GasProfile 上的“gas 属性”。

所以我的问题是,“是否有一些我缺少的属性TextBox可以让我将Text属性绑定到 GasProfile 并获取我想要显示的气体的值?” 如果没有,也许有一些方法可以创建一个代理类,可以像这样绑定:

<Grid>
    <ListBox ItemsSource="{Binding SelectedTechnician.Test}"
             DisplayMemberPath="TestName"
             SelectedItem="SelectedTest">
    </ListBox>

    <Label Content="H20"/>
    <TextBox Text="{Binding SelectedTestGasProfile.H20}"></TextBox>
    <Label Content="CO2"/>
    <TextBox Text="{Binding SelectedTestGasProfile.CO2}"></TextBox>
</Grid>

如果它不是“哦,请将此属性用于TextBox”,那么我正在寻找代码建议以实现上述目标。

谢谢

编辑

这是一个屏幕截图,显示我确实有一个选定的测试,并且 FieldGasProfileID(我的意思是 GasProfile)确实有一个值:

选择测试

4

1 回答 1

3
<TextBox Text="{Binding SelectedTest.GasProfile.H20}"</TextBox>
<Label Content="CO2"/>
<TextBox Text="{Binding SelectedTest.GasProfile.CO2}"</TextBox>

我希望这将有所帮助。

于 2013-03-07T17:45:07.827 回答