查看TextBox
所来自的继承层次结构,我发现TextBox
没有DisplayMemberPath
属性。这是有道理的,因为它没有ItemsSource
绑定的项目,因此没有DisplayMemberPath
。但是,对于DisplayMemberPath
或者可编辑的内容,我需要TextBox
之类的内容,我正在根据以下情况寻找选项。
我正在使用的类/视图/ ViewModels:
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
- 查看(USerControl)
这就是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
- ViewModel
有一个属性来获取/设置SelectedTest。
正如您所看到的,TextBox
es上我想要的数据绑定是错误的,DisplayMemberPath
的位置也是错误的,但这表明我非常希望显示的值是1)可编辑2)通过点击测试并绑定到GasProfile上的“气体属性”来显示,SelectedTest有一个键。
所以我的问题是,“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)确实有一个值:
答案 0 :(得分:2)
<TextBox Text="{Binding SelectedTest.GasProfile.H20}"</TextBox>
<Label Content="CO2"/>
<TextBox Text="{Binding SelectedTest.GasProfile.CO2}"</TextBox>
我希望这会有所帮助。