【发布时间】:2013-12-30 20:53:24
【问题描述】:
我有一个list box,它有一个用户控件列表。每个用户控件有 5 个组合框。我希望能够从主应用程序中读取每个用户控件中每个组合框的选定文本。但是,当我更改组合框中的选择时,当我在主应用程序中读取它时,用户控件中组合框的 text 属性不会改变。
代码隐藏:
radQueryParamList.Items.Add(new TCardQueryParameters());
Xaml(这只是一个如何显示 TCardQueryParameters 对象的数据模板):
<DataTemplate x:Key="TCardViewQueryParamDataTemplate">
<tcardqueryparam:TCardQueryParameters x:Name="TCardViewerParamUC" />
</DataTemplate>
<telerik:RadListBox Grid.Column="1" ItemTemplate="{StaticResource TCardViewQueryParamDataTemplate}" Name="radQueryParamList" VerticalAlignment="Top" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Grid.ColumnSpan="3">
我循环遍历用户控件列表的地方
string test = radTESTGACC.Text;//TEST combo box, Text property changes
//radQueryParamList is a listbox of user controls where TCardQueryParameters is the UC
foreach(TCardQueryParameters param in radQueryParamList.Items)
{
//Each UC has a radGACC combo box in it, and I am reading what the user
//selected for each user control here in the main app, but the text property
//never changes
String gacc = param.radGACC.Text; //Text property DOESN'T CHANGE
}
我认为用户控件的每个实例都会保持自己的状态,我只能读取用户为该组合框选择的内容,但事实并非如此。
【问题讨论】:
-
您是否已将内部 ComboBox 的
SelectedItem、SelectedValue或SelectedIndex属性绑定到任何东西以保持其选择?我在你的 XAML 中没有看到它 -
我没有,但我认为既然我正在阅读用户控件的实际组合框,我就不必这样做了。这就是我试图这样做的原因,所以我可以遍历内存中的实际控件并读取“文本”属性。所以似乎因为我传入了一个新的视图模型,我需要将选择绑定到这个视图模型中的一个属性,以便我的主应用程序可以读取它?
标签: wpf