【发布时间】:2013-04-11 13:44:57
【问题描述】:
谁能启发我以下方法不起作用
我正在使用 mvvm 模式
执行我的代码后,我仍然可以选中和取消选中 DataGridCheckBoxColumn 中的复选框
属性(我的 ViewModel 的一部分)
public bool noCheckPermission
{
get { return false; } // just as example
}
Xaml(我的视图后面没有代码)
<DataGrid Height="300" AutoGenerateColumns="False" SelectionMode="Single"
ItemsSource="{Binding Itemlist, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCheckBoxColumn}">
<Style.Triggers>
<DataTrigger Binding="{Binding noCheckPermission}" Value="False">
<Setter Property="IsReadOnly" Value="True"/>
</DataTrigger>
<DataTrigger Binding="{Binding noCheckPermission}" Value="True">
<Setter Property="IsReadOnly" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridCheckBoxColumn Width="60"
Header="Freigabe" Binding="{Binding FreigegebenL}" CanUserReorder="False">
</DataGridCheckBoxColumn>
</DataGrid.Columns>
</DataGrid>
编辑: 在做了盲人和威尔建议的事情之后。我把它作为我当前的 XAML
<DataGrid Height="300" Margin="12" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False"
CanUserResizeColumns="False" CanUserResizeRows="False" CanUserReorderColumns="False"
x:Name="grd" ItemsSource="{Binding Itemlist, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding selectedItem, UpdateSourceTrigger=PropertyChanged}" SelectionMode="Single" SelectionChanged="DataGrid_SelectionChanged" TabIndex="2">
<DataGrid.Columns>
<DataGridCheckBoxColumn Width="60" IsReadOnly="{Binding DataContext, Path=noCheckPermission, ElementName=grd}" Binding="{Binding FreigegebenL}"
Header="Freigabe" CanUserReorder="False">
</DataGridCheckBoxColumn>
</DataGrid.Columns>
</DataGrid>
这是我的输出窗口中的错误:System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=noCheckPermission; DataItem=null; target element is 'DataGridCheckBoxColumn' (HashCode=35155182); target property is 'IsReadOnly' (type 'Boolean')
【问题讨论】:
-
//just an example呃,没有看到那个代码没有人可以帮助你。它是触发数据触发器的属性的更改通知。如果视图模型中的属性没有更改通知,则不会显示对属性的更改。如果没有该代码,我们无法判断您是否拥有此代码。 -
@我是否也使用这个修复值(目前没有逻辑......)
-
明白。接下来你需要做的是打开数据绑定的调试消息:i.stack.imgur.com/MF8i5.png 接下来,重新运行并检查输出窗口,看看有什么错误。
-
@Will 看起来它没有被调用,但我所有其他属性都工作正常我还在星期二对拼写进行三次检查(这是我昨天能弄清楚的最后一件事)我会测试你的建议我也会窥探它,也许会找到一些东西
-
@在我的输出窗口中我不会得到任何与 DataBinding 问题有关的信息吗?您知道如何调试触发器吗?
标签: wpf mvvm binding datagrid triggers