首页 > 解决方案 > 绑定到 DataGrid 外部的属性

问题描述

我有多个 DataGrid DataGridTemplateColumn。在其中一列中,我有一个按钮,我想在用户选择行时显示该按钮,并且 IfCodeFonc等于 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 内部,它以某种方式限制它?

标签: c#wpf

解决方案


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

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

ViewModelViewModel 的名称在哪里。


推荐阅读