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> 
+0

我想你需要在这里双向绑定。这会告诉您的代码每次更改其中的任何一个值时更新其他值,以使所有值始终保持不变。 – Hosch250 2014-10-08 16:04:45

您不能结合的方法,只有属性。如果您想在属性更改时调用方法,请在该属性的setter中执行。 如果我理解正确的话,你有两个选择:

  1. Distance设置,调用GetDistanceInKM并修改一个新的属性DistanceInKM。然后使用转换器将您的DataTrigger绑定到DistanceInKM

  2. DataTrigger直接绑定到Distance属性,并在IsDistanceGreaterThanTenKMs转换器中转换为kms。