我想将一些整数转换为DataGrid列的ReadOnly值。对于这一点,我做了以下内容:C#/ WPF - 转换器不会被调用?
namespace TanulmanyiRendszer.Admin.ViewModel
{
public class GradeToReadOnlyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Boolean IsReadOnly = (Int32.Parse((String)value) < 2) ? true : false;
return IsReadOnly;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
}
XAML浏览
<Window x:Class="TanulmanyiRendszer.Admin.View.MainWindow"
<!-- ETC -->
xmlns:viewModel="clr-namespace:TanulmanyiRendszer.Admin.ViewModel"
Title="Courses" Height="600" Width="500">
<Window.Resources>
<viewModel:GradeToReadOnlyConverter x:Key="converter" />
</Window.Resources>
<!-- ETC -->
<DataGrid Name="studentGrid" Grid.Row="3" Grid.ColumnSpan="2" AutoGenerateColumns="False" ItemsSource="{Binding Students, Mode=TwoWay}" >
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="{Binding StudentGrade, Converter={StaticResource converter}}" Header="Student's grade" Binding="{Binding StudentGrade}"/>
</DataGrid.Columns>
</DataGrid>
</Window>
然而,这并没有在所有的工作。转换器永远不会被调用。我在这里错过了什么?
但'绑定=“{绑定StudentGrade}”'工作? – Clemens
@Clemens是的,exaclty。等级显示出来,但我可以编辑它们而不考虑价值。 –
检查输出窗口,您必须得到此错误:找不到目标元素的控制FrameworkElement或FrameworkContentElement。 BindingExpression:路径= StudentGrade;的DataItem = NULL;目标元素是'DataGridTextColumn'(HashCode = 15006601);目标属性是'IsReadOnly'(类型'布尔')。相同的原因和解决方案可以在这里找到:http://stackoverflow.com/questions/7660967/wpf-error-cannot-find-governing-frameworkelement-for-target-element –