【发布时间】:2018-07-26 08:59:06
【问题描述】:
我有多个 DataGridTemplateColumn 的 DataGrid。在其中一列中,我有一个按钮,当用户选择行时以及如果 CodeFonc 等于 1 时显示该按钮。(CodeFonc 不是 DataGrid/SelectedItem 的一部分)
视图模型:
private int _codeFonc;
public int CodeFonc
{
get { return _codeFonc; }
set
{
_codeFonc = value;
NotifyOfPropertyChange("CodeFonc");
}
}
XAML:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsSelected}" Value="True"/>
<Condition Binding="{Binding Path=CodeFonc, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Value="1" />
</MultiDataTrigger.Conditions>
<Setter Property="Button.Visibility" Value="Visible" />
</MultiDataTrigger>
我正在从另一个窗口获取 CodeFonc,但我 100% 确定它的值为 1,因为我在调试时确认了。
最重要的是:
如果我将 CodeFonc 替换为 DataGrid (SelectedItem) 本身的任何内容,则该按钮将显示正常。所以我的猜测是,因为上面的 XAML 在 DataGrid 内部,它会以某种方式限制它?
【问题讨论】:
-
您需要绑定 CodeFonc 有点不同,因为在 DataGrid 内部没有直接访问“全局”DataContext-only 到本地项目。请查看These-Answer 如果点击这些链接您无法执行这些操作,请告诉我,我会写一个完整的答案。
-
@Kaspar 工作!谢谢。
-
你在xaml中设置了
DataContext吗?