wpf 如何获取控件绑定的上一级对象

Gavin_Y 2012-05-25 03:45:24

<ListBox ItemsSource="{Binding Path=PelvicFractureInfos_left[0].FingerKeys2, NotifyOnTargetUpdated=True, ValidatesOnDataErrors=True}">
<ListBox.Template>
<ControlTemplate TargetType="{x:Type ListBox}">
<WrapPanel Orientation="Vertical" IsItemsHost="True"/>
</ControlTemplate>
</ListBox.Template>
<ListBox.ItemTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal">
<Label Width="30" Content="{Binding Path=ItemGroupName}"></Label>
<Label HorizontalAlignment="Right" Width="80" Content="{Binding Path=ItemName}"></Label>
<ComboBox Width="80" ItemsSource="{Binding Path=ComboBoxKeys, NotifyOnTargetUpdated=True, ValidatesOnDataErrors=True}"
Tag="{Binding Path=PelvicFractureInfos_left[0]}"

SelectedValuePath="ItemValueInfo" DisplayMemberPath="ItemDisylayInfo" SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

我现在想通过combobox的SelectionChange的事件修改这个combobox上一层PelvicFractureInfos_left[0]对象中的一个属性。现在我是把combobox的tag属性来绑定PelvicFractureInfos_left[0]这个对象,可是在SelectionChanged这个事件的时候获取的tag属性是空的。
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Diagnosis_BasedImpairmentEstimateInfo v = (sender as ComboBox).Tag as Diagnosis_BasedImpairmentEstimateInfo;

string selectvalue = (sender as ComboBox).SelectedValue.ToString();
int value = int.Parse(v.HipReplacement_TextValue.ToString());
v.SelectValue = (sender as ComboBox).SelectedValue.ToString(); //把下拉框的数值赋值给属性

Model.ComboBoxCommand_CheckTextValue.Execute(v);

}
...全文
588 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shabby1886 2012-05-26
  • 打赏
  • 举报
回复
listbox.tag = PelvicFractureInfos_left[0];

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox combobox = sender as ComboBox;
Diagnosis_BasedImpairmentEstimateInfo v = this.listbox.Tag as Diagnosis_BasedImpairmentEstimateInfo;

string selectvalue = combobox.SelectedValue.ToString();
int value = int.Parse(v.HipReplacement_TextValue.ToString());
v.SelectValue = combobox.SelectedValue.ToString(); //把下拉框的数值赋值给属性

Model.ComboBoxCommand_CheckTextValue.Execute(v);
}
Gavin_Y 2012-05-25
  • 打赏
  • 举报
回复
回复 : shabby1886



你的意思是我在后台直接给这个对象的属性赋值,而不是通过绑定来实现对吗?

可是这样有问题,因为我窗口有很多个combobox我是想通过一个方法来绑定他们的事件。所以我才用绑定对象到combobox的tag属性上的方法,这样就能获取到那个我需要的对象,但是现在没法实现。
你说的这个方法的话,可以是可以 就不能用同一个方法实现他们绑定的事件了。需要写很多个方法,来绑定combobox的事件了。

avi9111 2012-05-25
  • 打赏
  • 举报
回复
你这样写肯定不行的.

<ComboBox Width="80" ItemsSource="{Binding Path=ComboBoxKeys, NotifyOnTargetUpdated=True, ValidatesOnDataErrors=True}"
Tag="{Binding Path=PelvicFractureInfos_left[0]}"


明白你意思了,一般我不在xml里面写

在 listbox的databinging 事件里写(写gridview多)

在这个事件里可以获取到对象PelvicFractureInfos_left[0]

如果是第二行,则是lvicFractureInfos_left[1]


不过还真有些麻烦,要调试一下才行

shabby1886 2012-05-25
  • 打赏
  • 举报
回复
PelvicFractureInfos_left[0]既然这个对象是固定的,你取得combobox选择的值后,直接赋值就可以了

PelvicFractureInfos_left[0].HipReplacement_TextValue = combobox选择的值
Gavin_Y 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

你还没明白我的意思。既然PelvicFractureInfos_left[0]对象里面包含了FingerKeys2。
然后listbox的数据源是来自FingerKeys2,这样的话,listbox里面所有子控件绑定的数据源
都来自FingerKeys2,而非PelvicFractureInfos_left[0]。

现在你的操作是把listbox都无法得到的值:PelvicFractu……
[/Quote]
那请问你有什么好的建议或方法吗?
shabby1886 2012-05-25
  • 打赏
  • 举报
回复
你还没明白我的意思。既然PelvicFractureInfos_left[0]对象里面包含了FingerKeys2。
然后listbox的数据源是来自FingerKeys2,这样的话,listbox里面所有子控件绑定的数据源
都来自FingerKeys2,而非PelvicFractureInfos_left[0]。

现在你的操作是把listbox都无法得到的值:PelvicFractureInfos_left[0]绑定给listbox
的子控件
avi9111 2012-05-25
  • 打赏
  • 举报
回复
这个不是很简单么?

ComboBox c=sender as ComboBox;
Label l= c.GetParent() as Label;
Gavin_Y 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

listbox的itemssource本来绑定PelvicFractureInfos_left[0].FingerKeys2,所以listbox里面的任何控件绑定的值就来至PelvicFractureInfos_left[0].FingerKeys2,现在你要把PelvicFractureInfos_left[0]绑定给listbox里面的控件??就连listbox都无法得到PelvicFrac……
[/Quote]
我现在就是想把PelvicFractureInfos_left[0]这个对象绑定到combobox的tag属性中,可是这样在程序中获取的是tag是null。
shabby1886 2012-05-25
  • 打赏
  • 举报
回复
listbox的itemssource本来绑定PelvicFractureInfos_left[0].FingerKeys2,所以listbox里面的任何控件绑定的值就来至PelvicFractureInfos_left[0].FingerKeys2,现在你要把PelvicFractureInfos_left[0]绑定给listbox里面的控件??就连listbox都无法得到PelvicFractureInfos_left[0],何况listbox里面的子控件
Gavin_Y 2012-05-25
  • 打赏
  • 举报
回复
各位帮帮忙,教教小弟,怎么获取上一层的对象。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧