【发布时间】:2013-09-18 03:40:56
【问题描述】:
我有一个带有 Combobox 的 GridViewColumn 选择了基于 ComboBox 的 ComboBox 我想动态放置 UI 元素。下面给出的是代码。OperatorList 具有三个值“Between”、“After”、“Before”。基于此选择,模板具有要加载。如果“之间”多个文本框,否则单个文本框。这部分工作正常。但是要获取此内容并存储在模型类中的每一行是我遇到问题的地方。
<StackPanel>
<ComboBox Grid.Column="0" ItemsSource="{Binding Path=OperatorList}" IsEditable="True"
IsSynchronizedWithCurrentItem="True"
SelectedValue="{Binding ReferenceOperatorSelected}" />
<UserControl x:Name="MyControl">
</UserControl>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ReferenceOperatorSelected}" Value="Between">
<Setter TargetName="MyControl" Property="ContentTemplate" Value="{StaticResource MultipleTextBoxTemplate}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ReferenceOperatorSelected}" Value="After">
<Setter TargetName="MyControl" Property="ContentTemplate" Value="{StaticResource SingleTextBoxTemplate}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ReferenceOperatorSelected}" Value="Before">
<Setter TargetName="MyControl" Property="ContentTemplate" Value="{StaticResource SingleTextBoxTemplate}"></Setter>
</DataTrigger>
</DataTemplate.Triggers>
<DataTemplate x:Key="MultipleTextBoxTemplate">
<StackPanel>
<TextBox Text="{Binding Path=BetweenValue1,Mode=TwoWay,NotifyOnSourceUpdated=True}" MinWidth="40"></TextBox>
<TextBox Text="{Binding Path=BetweenValue2,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" MinWidth="40"></TextBox>
</StackPanel>
</DataTemplate>
在我的模型类中,我有两个属性 BetweenValue1 和 BetweenVALue2 ...当我在文本框中键入值时,这些属性不会更新..
【问题讨论】:
-
BetweenValue1 和BetweenVALue2 在您的模型或视图模型上吗?并且包含组合和用户控件的堆栈面板是您的 gridview 列模板?
-
BetweenValue1 和 BetweenValue2 将在模型中进行跟踪...是的 StackPanel 和 usercontrol 是 gridview 列模板的一部分..
-
所以 OperatorList,ReferenceOperatorSelected 都是您模型上的属性吗?
-
是的,它们是我模型中的属性