c# - 绑定到 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 内部,它以某种方式限制它?
解决方案
如果DataContext
尚未在 xaml 中设置,则可以将其设置为ViewModel
如下所示:
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
ViewModel
ViewModel 的名称在哪里。