查看来自的继承层次结构TextBox
,我发现它TextBox
没有DisplayMemberPath
属性。这是有道理的,因为它没有ItemsSource
要绑定到的 Items,因此没有DisplayMemberPath
. 但是,我需要 a DisplayMemberPath
for 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 的属性。
如您所见,我想要在TextBox
es 上的数据绑定是错误的,就像 的位置一样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)确实有一个值: