我的XAML看起来有点像这样:
<UserControl x:Class="MyNamespace.MyClass"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:MyNamespace"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="500">
<UserControl.Resources>
<local:MyViewModel x:Key="ViewModel"/>
</UserControl.Resources>
<UserControl.DataContext>
<Binding Source="{StaticResource ViewModel}"/>
</UserControl.DataContext>
<DataGrid Name="_myGrid" AutoGenerateColumns="False"
ItemsSource="{Binding Path=MyDataTable}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=name}" />
<TextBlock Text="{Binding
Source={StaticResource ViewModel}, Path=IsValidName}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<Grid FocusManager.FocusedElement="{Binding ElementName=NameTextBox}">
<TextBox Name="NameTextBox" Text="{Binding Path=name}" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
正如您可能在上面看到的那样,我的DataGrid将数据表绑定为ItemsSource。我通常绑定到数据表视图中的列,例如'name'。在某些情况下,我绑定到我的视图模型,而不是DataRowView。这可以在上面的第二个TextBlock中看到,我绑定到视图模型的IsValidName属性。我的问题是,如何将我的XAML中的信息传递回我的绑定源,在这种情况下我的视图模型?我想传递rowIndex,DataRowView对象,名称或类似的东西,以便视图模型上的IsValidName属性具有关于验证哪一行的上下文。
谢谢,
巴黎
答案 0 :(得分:0)
看起来你想调用你的IsValidName属性,就像传递参数的方法一样,验证哪一行。
如果您可以控制每一行的Type,那么在那里实现IsValidName属性,完全避免StaticResource绑定!