Xaml - 将ViewModel属性发送给另一个视图模型中的方法
问题描述:
我有一个DataGrid绑定到一个ViewModel集合,该集合有一个名为Distance的属性。在xaml中有没有办法将Distance属性发送到ViewModel中DataGrid项目源所在的方法?
例如:(GetDistanceInKM将是对同一个VM的报告的集合)Xaml - 将ViewModel属性发送给另一个视图模型中的方法
<DataGrid ItemsSource="{Binding ReportViewModels}">
<DataGrid.Columns>
<DataGridTextColum Binding="{Binding Distance}" Header="Distance" EditingElementStyle="{StaticResource DistanceStyle}"/>
</DataGrid.Columns>
</DataGrid>
<Style x:Key="DistanceStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding={Binding GetDistanceInKM[Distance], Converter={StaticResource IsDistanceGreaterThanTen}} Value="True">
<Setter Property="BorderBrush" Value={StaticResource HighlightBorderBrush}"/>
</DataTrigger>
</Style.Triggers>
</Style>
答
您不能结合的方法,只有属性。如果您想在属性更改时调用方法,请在该属性的setter中执行。 如果我理解正确的话,你有两个选择:
当
Distance
设置,调用GetDistanceInKM
并修改一个新的属性DistanceInKM
。然后使用转换器将您的DataTrigger
绑定到DistanceInKM
。将
DataTrigger
直接绑定到Distance
属性,并在IsDistanceGreaterThanTenKMs
转换器中转换为kms。
我想你需要在这里双向绑定。这会告诉您的代码每次更改其中的任何一个值时更新其他值,以使所有值始终保持不变。 – Hosch250 2014-10-08 16:04:45