我有多个DataGridTemplateColumn
的DataGrid。在这些列之一中,我有一个按钮,当用户选择该行以及CodeFonc
等于1时,我想显示该按钮。(CodeFonc不属于DataGrid / SelectedItem)
ViewModel:
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,因为在调试时已确认。
最重要的是:
如果我曾经用DataGrid(SelectedItem)本身中的任何内容替换CodeFonc
,则该按钮将正常显示。所以我的猜测是,因为上面的XAML位于DataGrid内部,所以以某种方式对其进行了限制?
答案 0 :(得分:0)
如果尚未在xaml中设置DataContext
,则可以将其设置为ViewModel
,如下所示:
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
ViewModel
是ViewModel的名称。