绑定到DataGrid外部的属性

时间:2018-07-26 08:59:07

标签: c# wpf

我有多个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内部,所以以某种方式对其进行了限制?

1 个答案:

答案 0 :(得分:0)

如果尚未在xaml中设置DataContext,则可以将其设置为ViewModel,如下所示:

<Window.DataContext>
    <local:ViewModel/>
</Window.DataContext>

ViewModel是ViewModel的名称。